2012-07-06 19 views
3

可能重複:
'for' loop and typecasting hell ! (PHP)
PHP Math PrecisionPHP用於與<=環是不穩定的

for ($x=0; $x<=1; $x+=.1) echo("-$x"); 
echo("<br>"); 
for ($x=0; $x<=1; $x+=.05) echo("-$x"); 

輸出:

-0-0.1-0.2-0.3-0.4-0.5-0.6-0.7-0.8-0.9-1 
-0-0.05-0.1-0.15-0.2-0.25-0.3-0.35-0.4-0.45-0.5-0.55-0.6-0.65-0.7-0.75-0.8-0.85-0.9-0.95` 

的音響第一個循環按預期輸出1。

第二環路退出時x==1,它不輸出1作爲預期

它與一些步驟增量等0.125,0.025,0.25,等,但不與像0.01其他值, .02,.002等

我從來沒有注意過,現在我不得不使用while循環來解決它。有人知道那裏發生了什麼嗎?我在php版本5.3.8和5.2.11中找到它。

+4

http://floating-point-gui.de/或簡而言之:不要依賴浮動來比較平等。 – KingCrunch 2012-07-06 20:22:45

+0

看看這個:http://stackoverflow.com/a/1316184/96603 – eWolf 2012-07-06 20:23:13

+0

嘿,這是快速和有益的,謝謝...,我想這就排除了使用while循環和相同的比較,甚至雖然一個while循環似乎按預期工作,這是在KingCrunch提供的鏈接上的一個很好的解釋,再次感謝... – user1507667 2012-07-06 20:31:23

回答