スウェーデンの通貨が間違った小数点記号を使用していたとのスウェーデンのユーザーからのバグレポートを受け取りました。誤った小数点記号を使用してAndroidで通貨をフォーマットする
NumberFormat enUS = NumberFormat.getCurrencyInstance(Locale.US);
NumberFormat enGB = NumberFormat.getCurrencyInstance(Locale.UK);
NumberFormat svSE = NumberFormat.getCurrencyInstance(new Locale("sv", "SE"));
double cost = 1020d;
String fmt = "en_US: %s en_GB %s sv_SE %s";
String text = String.format(fmt, enUS.format(cost), enGB.format(cost), svSE.format(cost));
Log.e("Format", text);
> Format﹕ en_US: $1,020.00 en_GB £1,020.00 sv_SE 1 020:00 kr
「1,020,00 kr」と書かれています。フォーマットオブジェクトを調べると、シンボルテーブルに "、"のdecimalSeparatorがあるように見えますが、 ":"の "monetarySeparator"になります。
誰かが知っているかどうか:これはAndroid/javaのバグか回避策のいずれかのバグかどうか、実際には正しいですか?
どのJavaのバージョンをお使いですか? 1.6.0_10では、私の出力は正しいフォーマットを示す 'en_US:$ 1,020.00 en_GB£1,020.00 sv_SE 1 020,00 kr'です。 – ufis