java - 货币小数分隔符不起作用

标签 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 欧元。

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

有人知道为什么吗?!谢谢

最佳答案

货币有其自定义分隔符。使用 setMonetaryDecimalSeparator

关于java - 货币小数分隔符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44776349/

相关文章:

javascript - 在 Javascript 中,toFixed() 是否对货币足够准确?

android - 致命异常 : java. lang.NumberFormatException

java - 将扑克牌数组列表中的所有数值相加

java - 在命令行上将感叹号传递给java程序

java - 带有 Java 的 REST/XML Api

php - 如何在 PHP 中跟踪用户位置/区域

java - 如何使用 POI SXSSF 阅读大型电子表格

java - 需要为 TextView 格式化货币

java - 为什么 DecimalFormat 忽略分组字符?