货币十进制分隔符不起作用

时间:2017-06-27 09:11:13

标签: java currency decimalformat

我有一个奇怪的行为,我使用DecimalFormat将double转换为货币值并更改小数点分隔符,但似乎在任何情况下都会忽略小数点分隔符。

class Currency {
  public static void main (String... args) {
     DecimalFormat nf =(DecimalFormat) DecimalFormat.getCurrencyInstance(Locale.getDefault());
     nf.setGroupingUsed(true);

     DecimalFormatSymbols symbols = nf.getDecimalFormatSymbols();
     symbols.setGroupingSeparator(' ');
     symbols.setCurrencySymbol("EUR");
     symbols.setDecimalSeparator('-');
     nf.setDecimalFormatSymbols(symbols);

     System.out.println(nf.format(13000.31));
  }
}

所以我希望结果应该是:13 000-31欧元,如果我在德国的地方,如果我在美国的地方,它应该是13,000-31欧元。但我所看到的是13 000,31欧元或13,000.31欧元。

它适用于货币符号和分组分隔符,但小数分隔符在任何情况下都会忽略。

有谁知道为什么?!感谢

2 个答案:

答案 0 :(得分:4)

对于货币,还有一个额外的字段来设置小数点分隔符:

symbols.setMonetaryDecimalSeparator('-');

答案 1 :(得分:4)

Currency有自定义分隔符。使用setMonetaryDecimalSeparator