Мой PHP
$MoneyFormat = new NumberFormatter('en_US.utf8', \NumberFormatter::TYPE_CURRENCY);
print $MoneyFormat->format(5.12);
дает мне
5.12E0
Почему? Я, конечно, ожидаю $ 5,12
Если я изменю параметр locale в NumberFormater на de_DE.utf8. Я получаю
5,12E0
locale -a
C
C.UTF-8
de_DE.utf8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IL
en_IL.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
POSIX
Ubuntu 20.04.2 LTS / PHP 7.4.12
The Constant for NumberFormatter: :__construct
является NumberFormatter::CURRENCY
$MoneyFormat = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
print $MoneyFormat->format(5.12);