问题 :
有两个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中处理浮点数运算时遇到的精度丢失问题,并提供了一个使用BigDecimal类来解决该问题的例子。通过将double类型转换为String类型再创建BigDecimal对象的方法,可以有效地避免精度丢失。
3881

被折叠的 条评论
为什么被折叠?



