【发布时间】:2013-06-27 02:56:10
【问题描述】:
我有这个代码:
for($i = 1; $i <= $max; $i+=0.1) {
echo "$i<br>";
}
如果变量$max = 6; 的结果是:1, 1.1, 1.2, 1.3 .... 5.8, 5.9, 6,但是当变量$max = 4 的结果是:1, 1.1 ... 3.8, 3.9,但是缺少数字 4。
请解释这种行为,以及可能的解决方案。
当我使用条件$i <= $max;或$i < $max;时结果是一样的
当$max 为2, 3 or 4 时会出现该错误
【问题讨论】:
-
我认为这与四舍五入问题有关:docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html其实错误不是缺少4而是打印的6
-
阅读关于浮点精度的红色块。 Floating point numbers
-
如果我修改循环 'for($i = 1; $i