for($s=0;$s<=1;$s+=0.05){
     echo $s."<br>";
    }
在这个循环中为什么没办法显示1出来?
还有就是
for($s=0;$s<=0;$s+=0){
     echo $s."<br>";
    }
在PHP中怎么会是死循环呢?请各位大大帮助解答一下。

解决方案 »

  1.   

    第一个循环到最后一次的时候,$s=1.05了,如果想要显示那条件改成$s<=1.05
    第2个循环,每次循环都是加0,0<=0;条件成立,死循环了
      

  2.   


    for($s=0;$s<=1;$s+=0.05){
      echo $s."<br>";
      }
    var_dump($s>1);//根据你的结果,猜测,这里是true
    部分浮点数,不能在不损失一点点精度的情况下转化为二进制,,有兴趣你自己试试看,比如0.7尽量避免类似的循环控制条件
      

  3.   


    for($s = 0; $s <= 1; $s += 0.05){
    echo $s."<br>";
    }
    echo ($s - 1);
    你可以看到输出的是2.2204460492503E-16
    至于第二个问题,自己仔细去看下,很简单的错误
      

  4.   


    这是个很google的问题,不适合用来讨论。
      

  5.   

    for($s=0,$i=0;$s<=100;$s+=5,$i+=0.05){
      echo $i."<br>";
    }
    自变量当然是越精确越好,同时最好是整数。精度高,而且速度快