被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"