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);