documentationには、範囲の$end
が含まれていると記載されています。これはほとんどの場合ですが、$end
と$step
の両方が浮動小数点の場合、最後の値はありません。何故ですか?floatの範囲と間隔で指定すると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