我有一个奇怪的行为,我使用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欧元。
它适用于货币符号和分组分隔符,但小数分隔符在任何情况下都会忽略。
有谁知道为什么?!感谢
答案 0 :(得分:4)
对于货币,还有一个额外的字段来设置小数点分隔符:
symbols.setMonetaryDecimalSeparator('-');
答案 1 :(得分:4)
Currency有自定义分隔符。使用setMonetaryDecimalSeparator
。