2012-05-23 83 views
2

使用setScale誰能helpme出與BigDecimal的,我是一個新手在它 我想圓的24.33至25.00 我只需要進行整運算 所以我做了這樣的事情在BigDecimal的

BigDecimal amount = new BigDecimal("24.33"); 
System.out.println(amount.setScale(2, RoundingMode.CEILING)); 

我期待得到25.00,但我仍然得到24.33 任何想法,我哪裏會出錯?

回答

1

該比例適用於小數點後的部分。你想要的是:

BigDecimal amount = new BigDecimal("24.33"); 
System.out.println(amount.setScale(0, RoundingMode.CEILING)); 

還記得BigDecimal s爲Immutable,等所有操作返回表示操作的結果一個新的BigDecimal。如果你不習慣,可以把你趕出去。

+0

我需要的結果是25.00,但我得到25,所以我將setScale(2)添加到結果amount.setScale(0,RoundingMode.CEILING).setScale(2),這可以嗎? – tintin

+0

是的,它會產生一個新的BigDecimal實例,但它是可以接受的。如果您需要始終顯示一定數量的小數位,您也可以使用'DecimalFormat'實例,但是必須將其轉換爲可能導致精度損失的'double'primitve。 –

+0

您不需要轉換爲雙精度型。 DecimalFormat樂意通過'format(Object)'方法接受BigDecimals。 – Dunes

2

試試這個 -

BigDecimal amount = new BigDecimal("24.33"); 
System.out.println(amount.setScale(0, RoundingMode.CEILING).setScale(2)); 

額外setScale(2)是得到25.00按你們的要求,而無需額外的setScale你會得到25的答案。