对于不需要任何准确计算准确精度的数字可以直接使用 float 或 double,但是如果需要精确计算的结果,则必须使用 BigDecimal 类,而且使用 BigDecimal 类也可以进行大数的操作
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 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 Test{
public static void main(String[] args) {
System.out.println("加法运算:" + MyMath.round(MyMath.add(10.345,3.333),1));
System.out.println("减法运算:" + MyMath.round(MyMath.sub(10.345,3.333),3));
}
}
这里最重要的就是 round 方法,此处的四舍五入操作实际上是用 divide 方法实现的,因为只有此方法才可以指定小数点之后的位数,而且任何一个数字除以1都是原数字。