货币小数分隔符不起作用
Posted
技术标签:
【中文标题】货币小数分隔符不起作用【英文标题】:Currency Decimal Separator not working 【发布时间】:2017-06-27 09:11:12 【问题描述】:我有一个奇怪的行为,我使用 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 欧元。
它适用于货币符号和分组分隔符,但小数分隔符在任何情况下都会忽略。
有人知道为什么吗?!谢谢
【问题讨论】:
【参考方案1】:货币有其自定义分隔符。使用setMonetaryDecimalSeparator
。
【讨论】:
【参考方案2】:对于货币,有一个额外的字段来设置小数分隔符:
symbols.setMonetaryDecimalSeparator('-');
【讨论】:
以上是关于货币小数分隔符不起作用的主要内容,如果未能解决你的问题,请参考以下文章
货币格式的 NSNumberFormatter.number 在设备中不起作用但在模拟器中起作用