如何通过检查值添加逗号和小数点四舍五入
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
。你必须自己弄清楚,因为我无法从你的例子中找到模式。然而,我用 round
和 money_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";
我正在构建一个个人应用程序,我可以在其中关注我目前持有和关注的加密货币。我注意到的问题是价格后面的小数点。一种货币通常最多有 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
。你必须自己弄清楚,因为我无法从你的例子中找到模式。然而,我用 round
和 money_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";