PHP添加值列表并不完全正确

时间:2016-11-15 03:25:59

标签: php

我从数据库中获取值列表,然后添加它们以获取所有行的总和。 PHP没有正确添加,我无法弄清楚原因。我正在用我正在做的事来赚钱。结果应为零,但PHP计算结果为-1.78美元。以下是什么问题:

$project

输出以下内容:

public function testAddition()
{
  $data = ['23.21','-38.20','14.99','0.00'];
  $total = 0;
  foreach ($data as $value) {
    $total += round(floatval($value), 2);
    var_dump($value);  // value to add
    var_dump($total);  // new total
  }
  // PHPunit results a success to zero, this is wrong, $total = -1.776...
  $this->assertEquals(0, $total); 
}

1 个答案:

答案 0 :(得分:1)

结果为-1.7763568394003E-15或0.0000000000000017763568394003;当"舍入" = 0.00。这只是一个计算数字的问题,因为"浮动" - 某处几乎总会有小残余

解决方案是将结果四舍五入?或者乘以100并使用(int)然后再除以100(尽管理论上划分可以留下余数)

此外,虽然它没有回答您的问题,但您不需要floatval,您只需使用$total += round($value, 2);,因为PHP会为您自己投射。