满足条件语句后,For循环不中断

时间:2020-10-01 03:39:43

标签: php

我正在尝试增加php上的小数位数,但在if语句中不会中断

for($x = 0; $x <= 1; $x += 0.001){
    //0.01 = 0.010
    if($x===0.01){
        break;  
    }
    echo $x.'<br>';
}

1 个答案:

答案 0 :(得分:1)

浮点算术在PHP(或实际上是任何一种语言)中都不是精确的。阅读Is floating point math broken,了解为什么会这样。 结果,循环计数器可能永远不会具有 exact 0.01。相反,当虚拟变量超过阈值0.01时,您可能会中断:

for ($x=0; $x <= 1; $x += 0.001) {
    // 0.01 = 0.010
    if ($x >= 0.01) {
        break;
    }

    echo $x . '<br>';
}

在本地测试时,上面的脚本正在打印:

0<br>0.001<br>0.002<br>0.003<br>0.004<br>0.005<br>0.006<br>0.007<br>0.008<br>0.009<br>