如何避免使用原语计算错误

时间:2016-07-06 14:33:08

标签: java primitive

以下例程预计会返回 1 ,但会返回 0.9999999999999999

double sum = 0;
for(int i=0; i<10; i++){
    sum+=0.1;
}
System.out.println(sum);

其他java数学运算也会出现同样的错误。

有没有办法避免这个问题?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

这就是所谓的浮点错误。这很自然,也很值得期待。避免它的方法是使用具有更高精度的变量,例如BigDecimal。但是BigDecimal执行计算的速度较慢,因此请考虑准确性在解决方案中的重要性。

如果这些数量代表货币,我建议使用BigDecimal尽管有任何表现命中。在这种情况下,更重要的是你的计算是正确的。