这里的其他答案对我不起作用,因为浮点数的舍入误差,结果不准确:
示例:
php 7.4:(包含与独占)
php > var_dump(range(0.54, 0.6, 0.01));
array(6) {
[0]=>
float(0.54)
[1]=>
float(0.55)
[2]=>
float(0.56)
[3]=>
float(0.57)
[4]=>
float(0.58)
[5]=>
float(0.59)
}
php > var_dump(range(0.52, 0.6, 0.01));
array(9) {
[0]=>
float(0.52)
[1]=>
float(0.53)
[2]=>
float(0.54)
[3]=>
float(0.55)
[4]=>
float(0.56)
[5]=>
float(0.57)
[6]=>
float(0.58)
[7]=>
float(0.59)
[8]=>
float(0.6)
}
php 8.0:(包含与排除 + 舍入误差)
php > var_dump(range(0.54, 0.6, 0.01));
array(6) {
[0]=>
float(0.54)
[1]=>
float(0.55)
[2]=>
float(0.56)
[3]=>
float(0.5700000000000001)
[4]=>
float(0.5800000000000001)
[5]=>
float(0.5900000000000001)
}
php > var_dump(range(0.52, 0.6, 0.01));
array(9) {
[0]=>
float(0.52)
[1]=>
float(0.53)
[2]=>
float(0.54)
[3]=>
float(0.55)
[4]=>
float(0.56)
[5]=>
float(0.5700000000000001)
[6]=>
float(0.5800000000000001)
[7]=>
float(0.5900000000000001)
[8]=>
float(0.6)
}
解决方案:
这确实给出了我的预期结果(PHP 7.4 及更高版本):
php > var_dump(array_map(fn($n) => $n/100, range(0.54*100, 0.6*100, 0.01*100)));
array(7) {
[0]=>
float(0.54)
[1]=>
float(0.55)
[2]=>
float(0.56)
[3]=>
float(0.57)
[4]=>
float(0.58)
[5]=>
float(0.59)
[6]=>
float(0.6)
}