浮点型问题
直接看例子
$weightPool = range(4.1, 6, 0.1);
print_r($weightPool)
// 从 $weightPool 中取值,可能会取到这样的小数 5.3999999999999995
// 我们期望的结果
Array
(
[0] => 4.1
[1] => 4.2
[2] => 4.3
[3] => 4.4
[4] => 4.5
[5] => 4.6
[6] => 4.7
[7] => 4.8
[8] => 4.9
[9] => 5
[10] => 5.1
[11] => 5.2
[12] => 5.3
[13] => 5.4
[14] => 5.5
[15] => 5.6
[16] => 5.7
[17] => 5.8
[18] => 5.9
[19] => 6
)
var_dump($weightPool);
// 实际结果
array(20) {
[0]=>
float(4.1)
[1]=>
float(4.199999999999999)
[2]=>
float(4.3)
[3]=>
float(4.3999999999999995)
[4]=>
float(4.5)
[5]=>
float(4.6)
[6]=>
float(4.699999999999999)
[7]=>
float(4.8)
[8]=>
float(4.8999999999999995)
[9]=>
float(5)
[10]=>
float(5.1)
[11]=>
float(5.199999999999999)
[12]=>
float(5.3)
[13]=>
float(5.3999999999999995)
[14]=>
float(5.5)
[15]=>
float(5.6)
[16]=>
float(5.699999999999999)
[17]=>
float(5.8)
[18]=>
float(5.8999999999999995)
[19]=>
float(6)
}
本作品采用《CC 协议》,转载必须注明作者和本文链接