我从数据库中获取值列表,然后添加它们以获取所有行的总和。 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);
}
答案 0 :(得分:1)
结果为-1.7763568394003E-15或0.0000000000000017763568394003;当"舍入" = 0.00。这只是一个计算数字的问题,因为"浮动" - 某处几乎总会有小残余
解决方案是将结果四舍五入?或者乘以100并使用(int)然后再除以100(尽管理论上划分可以留下余数)
此外,虽然它没有回答您的问题,但您不需要floatval,您只需使用$total += round($value, 2);
,因为PHP会为您自己投射。