PHP NumberFormatter和Currency,无法设置精度

Mic*_*ego 16 php numberformatter intl

我想在使用带货币的NumberFormatter PHP类(来自Intl扩展名)时设置精度为0 .但是我得到了一些奇怪的结果.这里:

$numberFormatter = new NumberFormatter('en-US', NumberFormatter::CURRENCY);
$numberFormatter->setAttribute(NumberFormatter::FRACTION_DIGITS, 0);

echo $numberFormatter->formatCurrency('45', 'USD');
Run Code Online (Sandbox Code Playgroud)

它输出$45,这是我想要的.但是,如果我EUR使用相同的设置更改货币:

echo $numberFormatter->formatCurrency('45', 'EUR');
Run Code Online (Sandbox Code Playgroud)

它输出€45.00(虽然我明确地设置为零精度).

更奇怪的是,如果我将语言环境设置为fr-FR,它会按预期输出数字:

$numberFormatter = new NumberFormatter('fr-FR', NumberFormatter::CURRENCY);
$numberFormatter->setAttribute(NumberFormatter::FRACTION_DIGITS, 0);

echo $numberFormatter->formatCurrency('45', 'EUR');
Run Code Online (Sandbox Code Playgroud)

它输出45 €.

这是一个错误吗?

Dir*_*irk -1

我认为您必须使用支持目标货币的区域设置。所以 en_US 没有欧元。de_DE 有它,fr_FR 也有。所以fr_FR支持欧元也就不足为奇了。

看来这不是一个bug。