documentation指出该范围的$end
是包含性的。在大多数情况下都是这种情况,但是当$end
和$step
都是浮点数时,最后的值就会丢失。这是为什么?为什么range()不包含在浮点范围和间隔时间内?
print_r(range(1, 13, 1));
print_r(range(1, 13, 0.1));
print_r(range(0.1, 1.3, 0.1));
输出:
Array
(
[0] => 1
[1] => 2
// ...
[11] => 12
[12] => 13
)
Array
(
[0] => 0.1
[1] => 0.2
// ...
[119] => 12.9
[120] => 13
)
Array
(
[0] => 0.1
[1] => 0.2
// ...
[10] => 1.1
[11] => 1.2
// 12 => 1.3 is missing
)
有趣。也许PHP 7中的错误? –
浮点是近似值。当你用'0.1'增加时,你不会总是精确地打到最后。 – Barmar
是的,似乎是PHP7 https://3v4l.org/kp1Fv – AbraCadaver