Double 和 float 都有这个问题
Double val1 = new Double(2.01);
Double val2 = new Double(1.00);
double va3 = val1 - val2;
System.out.println(va3);
// 输出结果 1.0099999999999998 !
使用BigDecimal 类型去做计算。
// BigDecimal 一定要传String 类型的参数
BigDecimal b1 = new BigDecimal("2.01");
BigDecimal b2 = new BigDecimal("1.00");
System.out.println(b1.subtract(b2));
本文通过示例展示了Java中Double和float类型在进行数学运算时存在的精度问题,并提供了解决方案,即使用BigDecimal类型进行精确计算。
999

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



