6
为什么第一个示例打印出错误的结果?Perl模运算符问题
perl -le 'print $x = 100*1.15 % 5'
4
perl -le 'print $x = 1000*1.15 % 5'
0
为什么第一个示例打印出错误的结果?Perl模运算符问题
perl -le 'print $x = 100*1.15 % 5'
4
perl -le 'print $x = 1000*1.15 % 5'
0
这是因为浮点运算的。
print $x = int(100*1.15);
给你114
四舍五入。请记住,计算机不能完美表示实际的小数位数 - 它们近似。在我的电脑上,perl -le 'print $x = (100*1.15)-115'
给出结果-1.4210854715202e-14
,这意味着100*1.15
差不多是115,而不是115.
这也发生在PHP中。 Python说它是5.0(是,%5 = 5.0) – NullUserException 2010-07-26 14:30:42
@NullUserException:tnanks。 python shell对测试浮点数算术的结果很有帮助:-) – 2010-07-26 14:56:41
所以是ruby。 Ruby告诉我这是4.999999 – NullUserException 2010-07-26 15:04:57