科学记数法会影响Perl的精确度吗?

时间:2010-01-13 12:49:48

标签: perl numbers precision

我在Perl中遇到了一个奇怪的行为。以下减法应该得到零结果(在Python中它):

print 7.6178E-01 - 0.76178
-1.11022302462516e-16

为什么会发生以及如何避免它?

P.S。效果出现在“为x86_64-linux-gnu-thread-multi构建的v5.10.0”(Ubuntu 9.04)和“为darwin-2level构建的v5.8.9”(Mac OS 10.6)

1 个答案:

答案 0 :(得分:8)

不是科学记数法影响精度,而是浮点符号的限制用二进制表示。查看perlfaq4的答案。对于依赖于数字存储的底层架构的任何语言来说,这都是一个问题。

如果您需要更好的号码处理,请查看bignum编译语。