被PHP搞糊涂了';s bcmul()标度

被PHP搞糊涂了';s bcmul()标度,php,bcmath,Php,Bcmath,为什么输出的是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($

为什么输出的是
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

?>

使用而不是


数学上87.5是87.50。如果需要额外的数字填充,可以使用
number\u格式
money\u格式
显示额外的0

它将87.50四舍五入,因为87.5将是相同的。要修复此问题,您需要:

number_format("87.50",2);
对于php<7.3,请使用

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

// $val = "10.00"
或者使用php>=7.3进行修复


因为第二个小数点是零……它的进位不超过87.5。如果你指定了3,结果是87.501,那么零将被包括在内。我的印象是刻度显示了你扔给它的任何数字。我应该使用
number\u format()。没有其他选择吗?在使用bcmul()之后,可以使用number_format()。number_format()用于输出格式。我在看到@Francis Gilbert的响应后将其组合在一起。谢谢
$val = bcmul('2', '5', 2);
$val = number_format($val, 2, '.', '');

// $val = "10.00"