问题 :
有两个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)。