2013-04-23 103 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生成庫。