var_dump(0.1+0.2 == 0.3);
// bool(false)
var_dump(0.1+0.7 == 0.8);
// bool(false)
var_dump(0.01+0.2 == 0.21);
// bool(false)
...
$money = $data['money']; // $money 为前端传的总金额,为 0.21
$applyList = [
['money' => 0.2],
['money' => 0.01]
];
$sums = 0;
foreach($applyList as $key => $value) {
$sums += $value['fee'];
}
var_dump($sums == $money); //发现是false
解决办法:bcadd()
bcadd() 2个任意精度数字的加法计算
var_dump(bcadd($sums,0,2) == $money);
本文探讨了PHP中使用浮点数进行加法运算时遇到的精度问题,通过实例展示了即使简单数值相加也可能导致不精确的结果。文章深入分析了这一现象的原因,并提出了解决方案——使用bcadd函数进行高精度计算,确保财务等敏感场景下的数据准确性。
310

被折叠的 条评论
为什么被折叠?



