如何通过检查值添加逗号和小数点

Posted

技术标签:

【中文标题】如何通过检查值添加逗号和小数点【英文标题】: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(),但不能像我在上面的示例中想要的那样。

【问题讨论】:

查看***.com/questions/20413672/… 【参考方案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";

【讨论】:

以上是关于如何通过检查值添加逗号和小数点的主要内容,如果未能解决你的问题,请参考以下文章

添加逗号时如何更新此 jQuery 插件/正则表达式以忽略小数?

Rails 去除除数字逗号和小数点以外的所有内容

将十进制转换为小数点后两个零的字符串,和逗号? C# [重复]

在 jQuery 中,如何添加小数位数的值?

JAVA编程:输出值要求格式化为:以逗号作为每千位的间隔符,并且小数点后四舍五入为两位。例如:123.45

小数的 SQL 格式,用逗号表示小数,仅用于数字