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