Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中使用错误的十进制分隔符格式化货币_Java_Android_Localization_Currency - Fatal编程技术网

Java 在Android中使用错误的十进制分隔符格式化货币

Java 在Android中使用错误的十进制分隔符格式化货币,java,android,localization,currency,Java,Android,Localization,Currency,我收到一个瑞典用户的错误报告,说我们的瑞典货币使用了错误的十进制分隔符 NumberFormat enUS = NumberFormat.getCurrencyInstance(Locale.US); NumberFormat enGB = NumberFormat.getCurrencyInstance(Locale.UK); NumberFormat svSE = NumberFormat.getCurrencyInstance(new Locale("sv", "SE")); double

我收到一个瑞典用户的错误报告,说我们的瑞典货币使用了错误的十进制分隔符

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
他们说格式应该是“10200 kr”。当我检查format对象时,看起来它在符号表中有小数分隔符“,”,但有一个“monetarySeparator”of“:”


有人知道:是否真的正确,这是Android/java中的一个bug,还是其他解决方法?

就像你的用户说的:在瑞典语中,千位分隔符是空格“”,十进制分隔符是逗号“”,货币符号是“kr”(克朗)。所以冒号“:”肯定是错的

您也可以在此处查看:

您使用的是什么Java版本?它在我的桌面1.6.0_13上运行良好

--更新--

Android上似乎存在一个bug,但您可以使用以下DecimalFormatSymbol来绕过该bug:

    DecimalFormat svSE = new DecimalFormat("#,###.00");
    DecimalFormatSymbols symbols = new DecimalFormatSymbols(new Locale("sv", "SE"));
    symbols.setDecimalSeparator(',');
    symbols.setGroupingSeparator(' ');
    svSE.setDecimalFormatSymbols(symbols);

这也会在Android中打印正确的分隔符。

您使用的是什么版本的java?在1.6.0_10上,我的输出是
en_US:$1020.00 en_GB£1020.00 sv_SE 1 020,00 kr
,显示了正确的格式。是的,肯定是Android中的错误。我还发现我可以使用symbols.setMonetarySeparator(',')实现同样的效果。