3

なぜこれが出力され、出力87.5されないの 87.50ですか?

<?php

$quantity = 25;
switch ($quantity)
{
    case ($quantity <= 50):
        $price = 3.50;
        break;
    case ($quantity <= 100):
        $price = 3.00;
        break;
    default:
        break;

}
echo bcmul($price, $quantity, 2);
// 87.5

?>
4

4 に答える 4

4

87.5は同じであるため、87.50を丸めています。修正するには、次のものが必要です。

number_format("87.50",2);
于 2011-06-21T16:32:39.293 に答える
2

number_format()の代わりに使用bcmul()

echo number_format(bcmul($price, $quantity, 2), 2, '.'); // forces to output always 2 diget after .
于 2011-06-21T16:32:11.587 に答える
2

数学的には87.5は87.50です。追加の数字のパディングが必要な場合は、number_formatまたはを使用money_formatして追加の0を表示できます

于 2011-06-21T16:32:11.783 に答える
0

php<7.3の使用

$val = bcmul('2', '5', 2);
$val = number_format($val, 2, '.', '');

// $val = "10.00"

またはphp>=7.3を使用して修正しました

https://www.php.net/manual/en/function.bcmul.php#refsect1-function.bcmul-notes

于 2019-12-20T12:48:29.877 に答える