【问题标题】:How to add commas and round decimals by checking value如何通过检查值添加逗号和小数点
【发布时间】:2018-02-18 02:32:17
【问题描述】:

我正在构建一个个人应用程序,我可以在其中关注我目前持有和关注的加密货币。我注意到的问题是价格后面的小数。一种货币通常最多有 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(),但不能像我在上面的示例中想要的那样。

【问题讨论】:

标签: php string decimal rounding number-formatting


【解决方案1】:

您可以使用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('$950194.0', 0); // $950,194
    echo "\n";

    echo my_money_format('$81851.6', 0); // $81,852
    echo "\n";

    echo my_money_format('$4364.97', 0); // $4,365
    echo "\n";

    echo my_money_format('$326.024', 2); // $326.02
    echo "\n";

    echo my_money_format('$35.0208', 2); // $35.02
    echo "\n";

    echo my_money_format('$4.50548', 2); // $4.51
    echo "\n";

    echo my_money_format('$0.0547128', 7); // $0.0547128
    echo "\n";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多