【问题标题】:Comma as decimal separator in Java逗号作为Java中的小数分隔符
【发布时间】:2016-02-10 09:03:17
【问题描述】:

我想将模式###,00 应用于我的大十进制数字,因此“,”是小数分隔符,不会使用分组分隔符。

我想用 describe 模式获取数字的字符串表示,所以我做了以下操作:

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator(',');
df.setGroupingUsed(false);

DecimalFormat df = new DecimalFormat("###,00", symbols);

但是当我执行下一个操作时:

System.out.println(df.format(new BigDecimal(589555.23)));

输出是 589555,我期待 589555,23 有什么问题?我怎样才能使它起作用?

【问题讨论】:

    标签: java string-formatting number-formatting


    【解决方案1】:

    您可以尝试使用逗号作为小数分隔符的语言环境。例如:

    NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.GERMAN);
    numberFormat.setMaximumFractionDigits(2);
    numberFormat.setMinimumFractionDigits(2);
    numberFormat.setGroupingUsed(false);
    System.out.println(numberFormat.format(new BigDecimal(589555.23)));
    

    【讨论】:

      【解决方案2】:

      只需将 decimalFormat 模式更改为 ###.00 因为在您的格式模式中,没有与十进制值相关的信息(小数点后),因此格式化输出中不会显示十进制值。

      symbols.setDecimalSeparator(',');
      DecimalFormat df = new DecimalFormat("###.00", symbols);
      

      输出:

      System.out.println(df.format(new BigDecimal(589555.23))); //589555,23
      

      【讨论】:

        【解决方案3】:

        在 DecimalFormat 中不要使用“,”,而是使用“.”

        DecimalFormat df = new DecimalFormat("########.##", symbols);
        

        我得到的输出是 589555,23

        DecimalFormatSymbols symbols = new DecimalFormatSymbols();
        symbols.setDecimalSeparator(',');
        
        
        DecimalFormat df = new DecimalFormat("########.##", symbols);
        df.setGroupingUsed(false);
        System.out.println(df.format(new BigDecimal(589555.23)));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-16
          • 1970-01-01
          • 1970-01-01
          • 2017-09-30
          • 2014-07-16
          • 2022-10-17
          相关资源
          最近更新 更多