Почему следующие две строки
$fmt = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
echo $fmt->format(12.34, NumberFormatter::CURRENCY);
выход $12.00
?
Это потому, что вы используете NumberFormatter::CURRENCY
константа в качестве второго аргумента format()
,
в предопределенные константы раздел NumberFormatter
документация, константы сгруппированы по каким методам их следует использовать.
NumberFormatter::CURRENCY
имеет значение 2
и должен использоваться при построении форматера, как вы сделали. Значение 2
в format()
функция соответствует NumberFormatter::TYPE_INT64
,
Вы должны просто быть в состоянии позвонить format(12.34)
без второго аргумента.
$fmt = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
echo $fmt->format(12.34);
Других решений пока нет …