なぜ次の2行はなぜNumberFormatterは、フォーマットの金融小数の桁数をドロップしない()
$fmt = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
echo $fmt->format(12.34, NumberFormatter::CURRENCY);
出力$12.00
?
なぜ次の2行はなぜNumberFormatterは、フォーマットの金融小数の桁数をドロップしない()
$fmt = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
echo $fmt->format(12.34, NumberFormatter::CURRENCY);
出力$12.00
?
format()
の第2引数にNumberFormatter::CURRENCY
定数を使用しているからです。
NumberFormatter
のドキュメントのpredefined constantsセクションでは、定数をどのメソッドで使用するかをグループ化しています。
NumberFormatter::CURRENCY
は、2
の値を持ち、フォーマッタの作成時に使用する必要があります。 format()
ファンクションの2
の値はNumberFormatter::TYPE_INT64
に対応します。
format(12.34)
を2番目の引数なしで呼び出すことができます。
$fmt = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
echo $fmt->format(12.34);
ありがとう、私は定数を誤用することに気付かなかった。 2番目の引数がなければ、実際には期待どおりに動作します。 –
私は承知しています '$ fmt-> formatCurrency()'の数字を削除しませんが、私はそれが$ fmt-> 'を経由して通貨記号を上書きすることができますので、' '形式を()を使用したいのですがsetSymbol() ' –
神の愛のためには、フロートとしてお金を保管しないでください。[moneyphp/money](https://packagist.org/packages/moneyphp/money)のような正しいライブラリを使用してください。浮動小数点の不正確さのために。 – Sammitch
@Sammitch私はそれを知っていますが、NumberFormatterを使用するにはフロートに変換する必要があります。 –