accept-language ヘッダーに基づいて通貨をフォーマットしようとしていますが、少し問題があります。
英語-米国のユーザーは 10,000,000.15 ユーロを理解しますが、ドイツに相当する 10.000.000.15 ユーロは理解できません。
一方、"$23,123" は英語-US ユーザーには問題ないように見えますが、"$23,123.00" は非常に奇妙に見えます。「23,123円」も同様です。後者は、次のコードを使用して取得したものです。
java.text.NumberFormat format = java.text.NumberFormat.getCurrencyInstance(java.util.Locale.US); format.setCurrency(java.util.Currency.getInstance("JPY"));
さらに気がかりなのは、ja_JP で USD を表示するときに発生する丸めです。7.95 をフォーマットすると、「USD7.95」ではなく「USD8」と表示されます。
これを回避する簡単な方法はありますか?通貨をフォーマットするためのより良いライブラリはありますか? ロケールの数値としてフォーマットし (通貨がロケールのデフォルトでない場合)、通貨コードまたは記号を先頭に追加する必要がありますか?