【问题标题】:PHP number minus same number not equal 0 [duplicate]PHP数字减去相同的数字不等于0 [重复]
【发布时间】:2022-01-05 11:50:56
【问题描述】:

我正在尝试使用 PHP 从 119.7 减去 119.7,但结果不是预期的 (-1.4210854715202E-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

【问题讨论】:

标签: php numbers calculator


【解决方案1】:

应该有帮助。

$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;
    }
}

【讨论】:

    【解决方案2】:

    这些数字的存储和转换方式似乎不相等。你总是可以使用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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 2015-11-09
      • 1970-01-01
      • 1970-01-01
      • 2018-05-03
      • 2015-12-23
      • 1970-01-01
      相关资源
      最近更新 更多