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);

这是“修复”它的一种方法,但似乎应该有一种对语言环境更友好的方法来做到这一点。

4

1 回答 1

2

回答我的问题;是的,这是 Android 中的一个已知错误:

https://code.google.com/p/android/issues/detail?id=38844

据说是在 4.2 之后修复的,但我们现在是 4.2.2

于 2013-03-12T01:11:34.907 回答