为什么 NumberFormatter 在 format() 中删除货币小数位

Why does NumberFormatter drop monetary fraction digits in format()

为什么会出现下面两行

$fmt = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
echo $fmt->format(12.34, NumberFormatter::CURRENCY);

输出.00 ?

这是因为您使用 NumberFormatter::CURRENCY 常量作为 format() 的第二个参数。

NumberFormatter 文档的 predefined constants 部分,常量被分组在它们应该使用的方法下。

NumberFormatter::CURRENCY 的值为 2 并且应该在构造格式化程序时使用,正如您所做的那样。 format()函数中的一个值2对应于NumberFormatter::TYPE_INT64.

您应该可以在没有第二个参数的情况下调用 format(12.34)

$fmt = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
echo $fmt->format(12.34);