我看到Using BigDecimal to work with currency但我有一点不同的问题。
我将带有 BigDecimal 参数的对象提供给 PDF 生成库,我不能使用 Formatter,只能发送对象。默认 toString 方法是否可能总是以 *.xx wg 134.40 格式写入 BigDecimal 对象?
我使用 setScale 但它不适用于例如 134.300 因为它写入 134.3 而不是 134.30
我看到Using BigDecimal to work with currency但我有一点不同的问题。
我将带有 BigDecimal 参数的对象提供给 PDF 生成库,我不能使用 Formatter,只能发送对象。默认 toString 方法是否可能总是以 *.xx wg 134.40 格式写入 BigDecimal 对象?
我使用 setScale 但它不适用于例如 134.300 因为它写入 134.3 而不是 134.30
我认为问题是您忘记了 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);
只需使用NumberFormat.getCurrencyInstance().format(n)
生成的字符串并将其传递给 PDF 生成库。