首页 > 解决方案 > 满足条件语句后for循环不中断

问题描述

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

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

标签: php

解决方案


浮点运算在 PHP(或实际上任何语言)中并不精确。阅读浮点数学是否被破坏,以大致解释为什么会出现这种情况。结果,循环计数器可能永远不会有确切的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>

推荐阅读