當我運行:PHP異常/怪異的行爲
for($o=1;$o<=655;$o++){ $r = $r+0.01; echo $r." ";}
在某些時候,我得到:
...4.29 4.3 4.31 4.32 4.33 4.34 4.35 4.36 4.37 4.38 4.39 4.4
4.41 4.42 4.4299999999999 4.4399999999999 4.4499999999999
4.4599999999999 4.4699999999999 ...
但是當我運行:
for($o=1;$o<=5;$o+=0.01){ echo $o." "; }
異常啓動at:
4.34 4.35 4.36 4.37 4.38 4.3899999999999 4.3999999999999
爲什麼添加是for循環的一部分,還是在for循環中有區別?
標準浮點不準確(谷歌它,或閱讀以下線程:http://stackoverflow.com/questions/2100490/floating-point-inaccuracy-examples) – ChristopheD
http://php.net/language.types。浮動 - 見大紅色框 - [每個計算機科學家應該知道的浮點算術](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) – hakre
我完全瞭解意識到這一點,但爲什麼它在for循環中定義和在它之後定義時有所不同? 如果我使用$ o ++和$ r = $ r + 0.01,它會在使用$ o + = 0.01時顯示不同的結果。這是真正的問題 –