2013-04-23 113 views
1

我看到了Using BigDecimal to work with currencies但我有一点点不同的问题。BigDecimal与最小的2个小数位

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

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

+0

当你尝试时它给了什么? – 2013-04-23 09:24:07

+1

你有没有试过 - “yourBigDecimal.SetScale(2,RoundingMode.HALF_UP);' – 2013-04-23 09:26:29

回答

4

我认为问题是,你已经忘记了的BigDecimal是不可改变的,setScale不会改变现有的BigDecimal

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

打印

134.40 

BTW做同样的事情double

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

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