2012-07-06 21 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

回答