使用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 任何想法,我哪裏會出錯?
使用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 任何想法,我哪裏會出錯?
該比例適用於小數點後的部分。你想要的是:
BigDecimal amount = new BigDecimal("24.33");
System.out.println(amount.setScale(0, RoundingMode.CEILING));
還記得BigDecimal
s爲Immutable,等所有操作返回表示操作的結果一個新的BigDecimal。如果你不習慣,可以把你趕出去。
試試這個 -
BigDecimal amount = new BigDecimal("24.33");
System.out.println(amount.setScale(0, RoundingMode.CEILING).setScale(2));
額外setScale(2)
是得到25.00按你們的要求,而無需額外的setScale
你會得到25的答案。
我需要的結果是25.00,但我得到25,所以我將setScale(2)添加到結果amount.setScale(0,RoundingMode.CEILING).setScale(2),這可以嗎? – tintin
是的,它會產生一個新的BigDecimal實例,但它是可以接受的。如果您需要始終顯示一定數量的小數位,您也可以使用'DecimalFormat'實例,但是必須將其轉換爲可能導致精度損失的'double'primitve。 –
您不需要轉換爲雙精度型。 DecimalFormat樂意通過'format(Object)'方法接受BigDecimals。 – Dunes