我想知道为什么会出现此错误。 (这是Eclipse调试的Display log)
var
(double) 2.8
tot.getIva()
(java.lang.Double) 0.17
var+tot.get()
(double) 2.9699999999999998
我无法理解为什么我没有得到简单的 2.97!
最佳答案
如果你想要 2.97
,你应该使用 BigDecimal
.
double
在 binary 中存储为分数,而不是十进制。例如,3.75
仅存储为 2^1 + 2^0 + 2^(-1) + 2^(-2)
。
2.8
和 0.17
不能精确表示为二进制小数,因此会出现一些舍入误差。
您还可以找到 this article有帮助。
关于Java double 求和麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10786587/