Php 为什么我的for循环不能像我期望的那样工作?

Php 为什么我的for循环不能像我期望的那样工作?,php,for-loop,floating-accuracy,Php,For Loop,Floating Accuracy,我找不到从for循环输出以下内容的原因 for循环 for($i=5; $i>0; $i=$i-.1){ echo $i.'<br>'; } 为什么打印1.0269562977783E-15?对我来说,它应该在0之前,而在0之后。首先,0.1是二进制浮点的最大敌人,因为没有精确的方法来表示它。有很多小数点不能用二进制浮点精确表示。在这种情况下,可以将循环调整为 for($i = 50; $i > 0; $i = $i - 1){ echo $i / 10.0 . '

我找不到从for循环输出以下内容的原因

for循环

for($i=5; $i>0; $i=$i-.1){
echo $i.'<br>';
}
为什么打印1.0269562977783E-15?对我来说,它应该在0之前,而在0之后。首先,0.1是二进制浮点的最大敌人,因为没有精确的方法来表示它。有很多小数点不能用二进制浮点精确表示。在这种情况下,可以将循环调整为

for($i = 50; $i > 0; $i = $i - 1){
  echo $i / 10.0 . '<br>';
}
首先,0.1是二进制浮点的最大敌人,因为没有精确的方法来表示它。有很多小数点不能用二进制浮点精确表示。在这种情况下,可以将循环调整为

for($i = 50; $i > 0; $i = $i - 1){
  echo $i / 10.0 . '<br>';
}
这与PHP中的浮点精度有关,但我不知道是什么导致了上一次迭代的精确结果

但是,如果要正确显示输出,请执行以下操作:

printf('%f', $i);
这与PHP中的浮点精度有关,但我不知道是什么导致了上一次迭代的精确结果

但是,如果要正确显示输出,请执行以下操作:

printf('%f', $i);

-浮点数不精确。请参阅该页上的红色大警告框。正如其他人所说,浮点。在回显之前对其进行回显:回显$i,1;-浮点数不精确。请参阅该页上的红色大警告框。正如其他人所说,浮点。在回显之前对其进行回显:回显$i,1;