我在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并没有帮助-导致其他非零差异。
这是因为在基数10中四舍五入的十进制数字不能在基数2中精确表示(计算机用来表示浮点数)。有关此问题和解决方法的详细说明,请参阅文章“每个计算机科学家都应了解的浮点算法 ”。