对 PHP 的 bcmul() 规模感到困惑

发布于 2024-11-16 12:16:39 字数 348 浏览 2 评论 0原文

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

?>

Why is this outputting 87.5 and not 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

?>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

﹎☆浅夏丿初晴 2024-11-23 12:16:39

它对 87.50 进行四舍五入,因为 87.5 是相同的。要修复,您需要:

number_format("87.50",2);

It is rounding the 87.50 as 87.5 would be the same. To fix, you'd need:

number_format("87.50",2);
千紇 2024-11-23 12:16:39

使用 number_format() 而不是 bcmul()

echo number_format(bcmul($price, $quantity, 2), 2, '.'); // forces to output always 2 diget after .

Use number_format() instead of bcmul()

echo number_format(bcmul($price, $quantity, 2), 2, '.'); // forces to output always 2 diget after .
救赎№ 2024-11-23 12:16:39

数学上 87.5 等于 87.50。如果您需要额外的数字填充,可以使用 number_formatmoney_format 显示额外的 0

Mathmatically 87.5 is 87.50. If you need additional number padding, you can use number_format or money_format to display the extra 0

活泼老夫 2024-11-23 12:16:39

对于 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

for php < 7.3 use

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

// $val = "10.00"

or use php >= 7.3 it fixed

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文