浮点型问题

直接看例子

$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 协议》,转载必须注明作者和本文链接
六月的风
Junwind
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!