Java中使用BigDecimal来解决精度丢失问题

问题 :

    有两个double类型的数字:

        double a=0.11;

double b=595555.32;

    诺是直接相加的结果:595555.4299999999 损失精度:

解决办法:创建bigdecimal对象,使用String类型来处理。

下方是例子:

public class Testa {

public static void main(String[] args) {
double a=0.11;
double b=595555.32;
System.out.println(0.11+595555.32);//595555.4299999999
BigDecimal bigDecimal1 = new BigDecimal(Double.toString(a));
BigDecimal bigDecimal2 = new BigDecimal(Double.toString(b));
System.out.println(bigDecimal1.add(bigDecimal2));//595555.43
}

}

总结:使用BigDecimal(double val)构造函数时仍会存在精度丢失问题,建议使用BigDecimal(String val)。

你可能感兴趣的:(Java基础)