【发布时间】:2026-02-08 09:40:01
【问题描述】:
我有许多数组,其中包含一些正数和一些负数,我需要将它们的每个数字相加。如果任何数组具有相同的数字,应该返回 0,但它返回的是指数数据。
$arr=[
'-20.91',
'-34.48',
'-5.18',
'34.48',
'20.91',
'5.18'
];
$total = 0;
foreach($arr as $ar){
$total+=$ar;
}
echo $total;
这段代码应该给我输出 0 但它返回 -3.5527136788005E-15 如果我写
echo round($total);
它显示 -0。
如果可能的话,有人可以帮我把它四舍五入到2来得到正确的输出吗?
提前致谢!
【问题讨论】:
-
这是浮点数的本质。您可能会发现
number_format()功能很有用。 -
number_format() 也不适合我
-
回显
number_format($total, 2)为您的测试用例生成0.00。由于您的示例数据似乎是两位小数,0.00是您正在寻找的正确吗?幕后$total依然是它的原始值。如果你想强制它为零,你可以有一个if条件。
标签: php floating-point addition