有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中逗号作为十进制分隔符的字符串格式

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

我希望使用descripe模式获取数字的字符串表示形式,因此我执行以下操作:

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怎么了?我怎样才能使它工作


共 (3) 个答案

  1. # 1 楼答案

    不要用“,”而要用“.”

    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)));
    
  2. # 2 楼答案

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

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

    产出:

    System.out.println(df.format(new BigDecimal(589555.23))); //589555,23
    
  3. # 3 楼答案

    可以尝试使用逗号用作小数分隔符的区域设置。例如:

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