今天在写项目的过程中遇到了这样一个问题
10.79 * 350 = 3776.4999999999995
而不是原来应该出现的 3776.5 导致四舍五入的过程中少一变成3776
上网一查,发现是精度缺失导致的
解决办法:
相乘前将其从double类型转换为BigDecimal类型
BigDecimal price = new BigDecimal(350);
BigDecimal unit = new BigDecimal(10.79);
BigDecimal money = price.multiply(unit);//将两数相乘
double money = price.multiply(unit).doubleValue();//相乘并将结果转为double
本文介绍了一种解决Java中浮点数运算精度缺失的方法,即通过使用BigDecimal类来进行高精度的数学运算,避免了因精度问题导致的计算误差。
2654

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



