如何在 PHP 中将数字格式化为美元数额

如何将数字转换为显示美元和美分的字符串?

eg:
123.45    => '$123.45'
123.456   => '$123.46'
123       => '$123.00'
.13       => '$0.13'
.1        => '$0.10'
0         => '$0.00'
120705 次浏览

在 PHP 和 C + + 中,可以使用 printf ()函数

printf("$%01.2f", $money);

PHP 也有 Money _ format ()

这里有一个例子:

echo money_format('$%i', 3.4); // echos '$3.40'

这个函数实际上有很多选项,请转到我链接到的文档中查看它们。

注意: money _ format 在 Windows 中没有定义。


更新: 通过 PHP 手册: https://www.php.net/manual/en/function.money-format.php

警告: 从 PHP7.4.0开始,这个函数[ Money _ format]已经被反对了。强烈建议不要依赖这个函数。

相反,看看 NumberFormatter: : formCurrency

    $number = "123.45";
$formatter = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
return $formatter->formatCurrency($number, 'USD');

如果你只想要一些简单的东西:

'$' . number_format($money, 2);

Number _ format ()

我试过 money_format(),但对我一点用也没有。然后我试了下面这个。对我来说很有效。希望对你也有好处。.:)

你应该用这个

number_format($money, 2,'.', ',')

它将显示货币数字的货币格式最多2个小数。

在 php.ini 中添加以下内容(如果缺少的话) :

#windows
extension=php_intl.dll


#linux
extension=php_intl.so

然后这样做:

$amount = 123.456;


// for Canadian Dollars
$currency = 'CAD';


// for Canadian English
$locale = 'en_CA';


$fmt = new \NumberFormatter( $locale, \NumberFormatter::CURRENCY );
echo $fmt->formatCurrency($amount, $currency);
/*     Just Do the following, */


echo money_format("%(#10n","123.45"); //Output $ 123.45


/*    If Negative Number -123.45 */


echo money_format("%(#10n","-123.45"); //Output ($ 123.45)

注意,在 PHP 7.4中,money _ format ()函数是 不赞成。它可以被 intl NumberFormatter 功能所替代,只要确保启用了 php-intl 扩展即可。这是一个很小的工作量,值得你得到很多可定制性。

$f = new NumberFormatter("en", NumberFormatter::CURRENCY);
$f->formatCurrency(12345, "USD"); // Outputs "$12,345.00"

Darryl Hein提到了仍然适用于7.4版本的快捷方式:

'$' . number_format($money, 2);