货币小数分隔符不起作用

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 在设备中不起作用但在模拟器中起作用

通过jquery将货币转换为小数

具有小数/浮点比较的 sqlite 选择查询不起作用

NSNumberFormatter paddingPosition 不起作用

使用逗号分隔符的表格排序不起作用

颤振列表视图波纹效果不起作用