PHP数字减去相同的数字不等于0



我正在尝试使用PHP从119.7减去119.7,但结果不是预期的(-14.2108854715202E-14(,预期结果是0

  1. Doc1 RestToPay=171
  2. 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);
}
}

最新更新