我正在尝试使用PHP从119.7减去119.7,但结果不是预期的(-14.2108854715202E-14(,预期结果是0
- Doc1 RestToPay=171
- Doc2 RestToPay=119.7
这是我的代码:
$TotalAmountToPay = 290.7;
foreach($Docs as $Doc){
$RestToPay = $Doc['RestToPay'];
if($TotalAmountToPay <= 0){
break;
}
$TotalAmountToPay = $TotalAmountToPay - $RestToPay;
if($TotalAmountToPay >= 0){
echo "OK: ".$TotalAmountToPay;
}else{
echo "Done: ".$TotalAmountToPay;
}
}
我得到的输出:
- 确定:119.7
- 完成时间:-1.4210854715202E-14
它应该会有所帮助。
$TotalAmountToPay = 290.7;
foreach($Docs as $Doc){
$RestToPay = $Doc['RestToPay'];
if($TotalAmountToPay <= 0){
break;
}
$TotalAmountToPay = round($TotalAmountToPay,2) - round($RestToPay,2);
if($TotalAmountToPay >= 0){
echo "OK: ".$TotalAmountToPay;
}else{
echo "Done: ".$TotalAmountToPay;
}
}
这些数字的存储和转换方式似乎不相等。你可以一直使用round()
函数,它应该能得到你想要的。所以也许可以试试这个:
$TotalAmountToPay = 290.7;
foreach($Docs as $Doc){
$RestToPay = $Doc['RestToPay'];
if($TotalAmountToPay <= 0){
break;
}
$TotalAmountToPay = $TotalAmountToPay - $RestToPay;
if($TotalAmountToPay >= 0){
echo "OK: ".round($TotalAmountToPay,4);
}else{
echo "Done: ".round($TotalAmountToPay,4);
}
}