我正在建立一个个人应用程序,我可以按照我目前持有和关注的加密货币。我注意到的问题是价格背后的小数。一种货币通常最多包含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(),但不能像我在上面的例子中那样做。
答案 0 :(得分:0)
您可以使用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('$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";