2010-07-26 83 views
6

为什么第一个示例打印出错误的结果?Perl模运算符问题

perl -le 'print $x = 100*1.15 % 5' 
4 
perl -le 'print $x = 1000*1.15 % 5' 
0 
+1

这也发生在PHP中。 Python说它是5.0(是,%5 = 5.0) – NullUserException 2010-07-26 14:30:42

+0

@NullUserException:tnanks。 python shell对测试浮点数算术的结果很有帮助:-) – 2010-07-26 14:56:41

+0

所以是ruby。 Ruby告诉我这是4.999999 – NullUserException 2010-07-26 15:04:57

回答

9

这是因为浮点运算的。

print $x = int(100*1.15); 

给你114

5

四舍五入。请记住,计算机不能完美表示实际的小数位数 - 它们近似。在我的电脑上,perl -le 'print $x = (100*1.15)-115'给出结果-1.4210854715202e-14,这意味着100*1.15差不多是115,而不是115.