Tob*_*bia 1 java floating-point double
我想知道为什么我会收到这个错误.(这是Eclipse调试的显示日志)
var
(double) 2.8
tot.getIva()
(java.lang.Double) 0.17
var+tot.get()
(double) 2.9699999999999998
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我没有简单地得到2.97!
Lou*_*man 12
如果你想2.97,你应该使用BigDecimal.
doubles以二进制形式存储为分数,而不是十进制.因此3.75,例如,只是存储为2^1 + 2^0 + 2^(-1) + 2^(-2).
2.8并且0.17不能完全表示为二进制分数,因此会出现一些舍入误差.
您可能还会发现本文很有帮助.