php 浮點數相加精度問題及解決辦法

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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章