一尘不染

为什么此减法不等于零?

java

我在ColdFusion代码中碰巧遇到了这些值,但Google计算器似乎有相同的“错误”,但差不为零。

416582.2850-411476.8100-5105.475 = -2.36468622461E-011

http://www.google.com/search?hl=zh_CN&rlz=1C1GGLS_enUS340US340&q=416582.2850+-+411476.8100+-+5105.475&aq=f&oq=&aqi=

JavaCast将它们转换为long / float / double并没有帮助-导致其他非零差异。


阅读 274

收藏
2020-09-08

共1个答案

一尘不染

这是因为在基数10中四舍五入的十进制数字不能在基数2中精确表示(计算机用来表示浮点数)。有关此问题和解决方法的详细说明,请参阅文章“每个计算机科学家都应了解的浮点算法
”。

2020-09-08