【问题标题】:How to format BigDecimal with 2 fractions?如何用 2 个分数格式化 BigDecimal?
【发布时间】:2014-07-03 15:25:13
【问题描述】:

我想将 BigDecimal 数字格式化并显示为总是分数。不应显示其他分隔符。我怎样才能实现它?以下不起作用。

NumberFormat formatter = NumberFormat.getNumberInstance(Locale.GERMANY);
formatter.setMaximumFractionDigits(2);
formatter.setMinimumIntegerDigits(2);
Sysout(formatter.format(new BigDecimal(100))); //would expect "100,00", but printout is "100"

【问题讨论】:

    标签: java currency bigdecimal


    【解决方案1】:

    setMinimumFractionDigits 将设置数字小数部分的最小位数。

    NumberFormat formatter = NumberFormat.getNumberInstance(Locale.GERMANY);
    formatter.setMaximumFractionDigits(2);
    formatter.setMinimumIntegerDigits(2);
    formatter.setMinimumFractionDigits(2);
    System.out.println((formatter.format(new BigDecimal(100)))); // prints "100,00"
    

    【讨论】:

    • 你有两次setMaximumFractionDigits。 OP 已经有了。
    • 你是对的,谢谢。我以为是setMaximumIntegerDigits。会更新的。
    【解决方案2】:

    只需使用自定义格式

    0.00
    

    像这样:

    NumberFormat formatter = new DecimalFormat("0.00", DecimalFormatSymbols.getInstance(Locale.GERMANY));
    

    这将强制任何传入的数字必须为小数。

    【讨论】:

      【解决方案3】:

      你可以使用它。

       aBigDecimal.SetScale(2, RoundingMode.HALF_UP);
      

      【讨论】:

        【解决方案4】:
        BigDecimal d=new BigDecimal("100");
        d=d.setScale(2, RoundingMode.CEILING);
        System.out.println(d);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-24
          • 1970-01-01
          • 2012-10-02
          • 2013-06-08
          • 2013-06-21
          相关资源
          最近更新 更多