【问题标题】:BigDecimal with minimal 2 fraction digitsBigDecimal 最少 2 个小数位
【发布时间】:2013-04-23 09:23:07
【问题描述】:

我看到了Using BigDecimal to work with currencies,但我遇到了一些不同的问题。

我将带有 BigDecimal 参数的对象提供给 PDF 生成库,但我不能使用 Formatter,只能发送对象。默认 toString 方法是否可能总是以 *.xx w.g 134.40 格式写入 BigDecimal 对象?

我使用 setScale 但它不适用于例如134.300 因为它写的是 134.3 而不是 134.30

【问题讨论】:

  • 你试过后得到了什么??
  • 你试过了吗 - yourBigDecimal.SetScale(2, RoundingMode.HALF_UP);

标签: java currency tostring bigdecimal


【解决方案1】:

我认为问题在于您忘记了 BigDecimal 是不可变的并且 setScale 不会改变现有的 BigDecimal

BigDecimal decimal = BigDecimal.valueOf(134.4);
BigDecimal decimal2 = decimal.setScale(2, RoundingMode.HALF_UP);
System.out.println(decimal2);

打印

134.40

顺便说一句,用double做同样的事情

double d = 134.4;
System.out.printf("%.2f%n", d);

【讨论】:

    【解决方案2】:

    只需使用 NumberFormat.getCurrencyInstance().format(n) 并将生成的字符串传递给 PDF 生成库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多