如何通过检查值添加逗号和小数点四舍五入

How to add commas and round decimals by checking value

我正在构建一个个人应用程序,我可以在其中关注我目前持有和关注的加密货币。我注意到的问题是价格后面的小数点。一种货币通常最多有 2 位小数,但 Coinmarketcap 的 API 给了我更多,具体取决于价格是多少。

下面是我从 API 获得的值的示例,以及我实际希望如何显示价格。超过 1000 的值将有一个逗号并且没有小数。

950194.0 美元 -> 950,194 美元
$81851.6 -> $81,852
4364.97 美元 -> 4,365 美元
326.024 美元 -> 326.02 美元
35.0208 美元 -> 35.02 美元
4.50548 美元 -> 4.51 美元
$0.0547128 -> $0.0547128

我从来没有尝试过这样的事情,所以我真的不知道如何开始。尝试使用 round() 和 numberFormat(),但无法像我在上面的示例中想要的那样。

您可以使用 money_format 让事情变得更简单。然而,问题在于你想要什么precision。你必须自己弄清楚,因为我无法从你的例子中找到模式。然而,我用 roundmoney_format 为您编写了简单的函数。剩下的就是在每种情况下将 precision 调整到您想要的位置。

<?php

    function my_money_format($number, $precision=0)
    {
        $number = preg_replace( '/[^0-9.,]/', '', $number); // clean the input
        $number = round($number, $precision);
        $format = '%.' . $precision . 'n';
        setlocale(LC_MONETARY, 'en_US'); // set money format to US to use $
        return money_format($format, $number);
    }

    echo my_money_format('0194.0', 0); // 0,194
    echo "\n";

    echo my_money_format('851.6', 0); // ,852
    echo "\n";

    echo my_money_format('64.97', 0); // ,365
    echo "\n";

    echo my_money_format('6.024', 2); // 6.02
    echo "\n";

    echo my_money_format('.0208', 2); // .02
    echo "\n";

    echo my_money_format('.50548', 2); // .51
    echo "\n";

    echo my_money_format('[=10=].0547128', 7); // [=10=].0547128
    echo "\n";