我收到瑞典用户的错误报告,说我们的瑞典货币使用了错误的小数点分隔符。
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,但是“:”的“currencySeparator”。
有没有人知道:实际上是否正确,这是Android / java中的错误,还是任何类型的解决方法?
答案 0 :(得分:6)
就像你的用户说:瑞典千分隔符是空格“”,小数分隔符是逗号“,”和货币符号“kr”(克朗)。所以冒号“:”肯定是错的。
您也可以在此处查看:http://www.localeplanet.com/java/sv-SE/
您使用的是哪个Java版本?它在我的桌面1.6.0_13上运行良好
- 更新 -
似乎在Android上存在一个错误,但你可以通过使用像这样的DecimalFormatSymbols解决这个问题:
DecimalFormat svSE = new DecimalFormat("#,###.00");
DecimalFormatSymbols symbols = new DecimalFormatSymbols(new Locale("sv", "SE"));
symbols.setDecimalSeparator(',');
symbols.setGroupingSeparator(' ');
svSE.setDecimalFormatSymbols(symbols);
这也会在Android中打印正确的分隔符。