2011-12-22 56 views

回答

3

疗法的原因是,只有那些2的幂数可以精确用一个简单的二进制表示表示。

一个二进制数的个别数字是2个不同的功率和任何数目因此是不同功率的2

0.1总和不对应于2的幂,并且不能从不同总结2的幂。因此它只能用一定的误差表示。你可以找到一个更详细的解释和例子here

如果你需要精确的数字,你基本上结合使用整数。我不确定其他语言,但是在java中有几个类设计用于精确地解决这个问题,以适应精确性至关重要的应用,如财务计算。最突出的是BigIntegerBigDecimal

1

这是由于IEEE 754,这是计算机存储浮点数的方式。

利用该表示,0.1不能被精确地甚至由一个96位浮点数来表示。对于这个问题,0.3也不能,但如果后者是0.1,那么不能准确地表示0.1,这意味着将其乘以3不会完全产生0.3。

相关问题