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

如何在PHP中将数字格式化为美元金额,php,formatting,currency,Php,Formatting,Currency,如何将数字转换为表示美元和美分的字符串 eg: 123.45 => '$123.45' 123.456 => '$123.46' 123 => '$123.00' .13 => '$0.13' .1 => '$0.10' 0 => '$0.00' PHP和C++中,可以使用Primff()函数< /P> PHP也有 下面是一个例子: echo money_format('$%i', 3.4);

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

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

PHP和C++中,可以使用Primff()函数< /P> PHP也有

下面是一个例子:

echo money_format('$%i', 3.4); // echos '$3.40'
这个函数实际上有很多选项,请转到我链接的文档查看它们

注意:Windows中未定义money_格式


更新:通过PHP手册:

警告:从PHP 7.4.0开始,此函数[money\u format]已被弃用。非常不鼓励依赖此功能

相反,要调查


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

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

我尝试了
money\u format()
,但它对我根本不起作用。然后我试了下一个。这对我来说非常有效。希望它也能以正确的方式为您工作:)

你应该用这个

number_format($money, 2,'.', ',')
它将以货币格式显示货币编号,最多2位小数。

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

然后这样做:

$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);

请注意,在PHP7.4中,money_format()函数是。它可以被intl NumberFormatter功能取代,只需确保启用了php intl扩展。这是一个小的努力和值得的,因为你得到了大量的定制

$f = new NumberFormatter("en", NumberFormatter::CURRENCY);
$f->formatCurrency(12345, "USD"); // Outputs "$12,345.00"
7.4仍然有效的快速方法如下所述:


你脑子里有一种特定的编程语言吗?我想它应该是特定的-我现在就改变它。注意将浮点格式化为某个数字所引入的隐式舍入。如果有两个$0.015的项目,则可能出现2+2=3的情况。还请注意,浮点不能准确地保存0.1之类的简单值。您应该使用整数并存储美分数,而不是使用浮点,否则您将在过程中损失一些美分。内置PHP函数非常方便。来自doco:note:function money_format()仅当系统具有strfmon功能时才定义。例如,Windows没有,所以money_format()在Windows中没有定义。理论上我最喜欢这种方法,但为什么我的输出为3.40美元。您知道我可以更改哪些参数以获得上述输出(不带“USD”)?显然,我更喜欢在没有str_replace或regex的情况下执行此操作。找到了答案。只做货币形式('.2n',3.4);此函数现在是否已弃用?当我使用它时,它现在是“未定义的”。但是
money\u格式('$%I',3.4)
不能像大多数人喜欢的那样处理负片。请注意,这将在每个三位数的分组后添加逗号(或您所在地区的等效字符)。这可能是需要的,但如果您没有预料到,可能会非常混乱。要在没有数千个分隔符的情况下执行此操作:
“$”。数字格式($money,2,'.'','')这不适用于负数,我们使用-69.42美元而不是-69.42美元
#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)
$f = new NumberFormatter("en", NumberFormatter::CURRENCY);
$f->formatCurrency(12345, "USD"); // Outputs "$12,345.00"
'$' . number_format($money, 2);