2
    Locale locale = Locale.getDefault();
    final NumberFormat numberFormat = NumberFormat.getCurrencyInstance(locale);

ロケールは es_US です

numberFormat は

 java.text.DecimalFormatSymbols[currency=USD,currencySymbol=$,decimalSeparator=,,digit=#,exponentSeparator=E,groupingSeparator=.,infinity=∞,intlCurrencySymbol=USD,minusSign=-,monetarySeparator=,,NaN=NaN,patternSeparator=;,perMill=‰,percent=%,zeroDigit=0]

decimalSeparator と groupingSeparator が間違っています。と 、それぞれ。これは Android のバグですか?

編集:

    DecimalFormatSymbols decimalFormatSymbols = ((DecimalFormat) numberFormat).getDecimalFormatSymbols();

    if ("US".equalsIgnoreCase(locale.getCountry())
            && "es".equalsIgnoreCase(locale.getLanguage())) {
        decimalFormatSymbols.setMonetaryDecimalSeparator('.');
        decimalFormatSymbols.setGroupingSeparator(',');
    }

    ((DecimalFormat) numberFormat).setDecimalFormatSymbols(decimalFormatSymbols);

これはそれを「修正」する 1 つの方法ですが、実際には、よりロケールに適した方法で行う必要があるようです。

4

1 に答える 1