当您使用 range 函数时,范围在 0 和 1 之间,每步递增 0.05,当您尝试从 1 减去循环中的当前值时,循环会产生不正确的结果。
正如您在下面看到的,数组中的最后一个元素是整数 1。脚本应该回显 1 减去 1 的结果。但是,由于某种原因,PHP 将 1-1 视为 -2.22044604925E-16 而不是零。
重现代码:
foreach (range(0,1,0.05) as $t)
{
echo (1-$t).'<br />';
}
Expected result:
----------------
1
0.95
0.9
0.85
0.8
0.75
0.7
0.65
0.6
0.55
0.5
0.45
0.4
0.35
0.3
0.25
0.2
0.15
0.1
0.05
0
Actual result:
--------------
1
0.95
0.9
0.85
0.8
0.75
0.7
0.65
0.6
0.55
0.5
0.45
0.4
0.35
0.3
0.25
0.2
0.15
0.1
0.05
-2.22044604925E-16