为什么十进制运算的结果不正确?

时间:2015-10-08 07:22:19

标签: java android eclipse decimal

我想用作2位小数的双精度值。但我认为我的值不正确。

1.965 =必须是1.97,但结果是1.96

我累了他们:

DROP TABLE #testTempTable DecimalFormat("0.00")DecimalFormat("#.##")

但结果没有改变。

谢谢..

NumberFormat.getInstance() / ..setMaximumFractionDigits(2)

1 个答案:

答案 0 :(得分:1)

原因在于浮点数在内部被重复。它们的形式(二进制尾数)* 2 ^(二进制指数)。通常,任何十进制数都不能以二进制形式表示完全,因此在计算该表示时已经进行了一些舍入。

简而言之,您的数字1.965可能最终表示为小于1.965的二进制浮点数,当您的程序将其舍入到2位小数时,您会得到这种意外结果。

这里http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html全面概述了浮点运算的缺陷。