我在Perl中遇到了一个奇怪的行为。下面的减法结果应该是零(这是在Python中做的):
print 7.6178E-01 - 0.76178
-1.11022302462516e-16为什么会发生这种情况,如何避免呢?
P.S.效果出现在"v5.10.0为x86_64-linux-gnu-thread-multi构建“(Ubuntu 9.04)和"v5.8.9为darwin-2 2level构建”(Mac OS 10.6)上。
发布于 2010-01-13 22:04:03
这并不是说科学记数法对精度的影响比以二进制表示的浮点记数法的局限性更大。请参阅perlfaq4的答案。对于任何依赖底层架构进行数字存储的语言来说,这都是一个问题。
如果您需要更好的数字处理,请查看bignum杂注。
https://stackoverflow.com/questions/2056681
复制相似问题