В documentation указано, что $end
диапазона включен. И в большинстве случаев это происходит, но когда оба значения $end
и $step
являются поплавками, последнее значение отсутствует. Почему это?Почему диапазон() не включен, если задан с поплавковым диапазоном и интервалом?
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