2010-07-26 82 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.