1、問題描述
2、問題分析
3、具體的代碼
//之前的計算形式
float a = 2.2f;
float b = 2.0f;
float c = a - b;
//改變成以下的寫法
BigDecimal a1 = new BigDecimal(Float.toString(a));
BigDecimal b1 = new BigDecimal(Float.toString(b));
float c1 = a1.subtract(b1).floatValue();
以下代碼轉載自:http://blog.sina.com.cn/s/blog_6a0cd5e501011soa.html
</pre><pre name="code" class="java">
package org.lxh.demo11.numberdemo;
import java.math.BigDecimal;
class MyMath {
public static double add(double d1, double d2)
{ // 進行加法運算
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.add(b2).doubleValue();
}
public static double sub(double d1, double d2)
{ // 進行減法運算
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.subtract(b2).doubleValue();
}
public static double mul(double d1, double d2)
{ // 進行乘法運算
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.multiply(b2).doubleValue();
}
public static double div(double d1,
double d2,int len) {// 進行除法運算
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.divide(b2,len,BigDecimal.
ROUND_HALF_UP).doubleValue();
}
public static double round(double d,
int len) { // 進行四捨五入
操作
BigDecimal b1 = new BigDecimal(d);
BigDecimal b2 = new BigDecimal(1);
// 任何一個數字除以1都是原數字
// ROUND_HALF_UP是BigDecimal的一個常量,
表示進行四捨五入的操作
return b1.divide(b2, len,BigDecimal.
ROUND_HALF_UP).doubleValue();
}
}
public class BigDecimalDemo01 {
public static void main(String[] args) {
System.out.println("加法運算:" +
MyMath.round(MyMath.add(10.345,
3.333), 1));
System.out.println("乘法運算:" +
MyMath.round(MyMath.mul(10.345,
3.333), 3));
System.out.println("除法運算:" +
MyMath.div(10.345, 3.333, 3));
System.out.println("減法運算:" +
MyMath.round(MyMath.sub(10.345,
3.333), 3));
}
}