BigDecimal點滴

關於金錢的計算經常會用到BigDecimal,其中精度和四捨五入是個容易忘記的點,專門記錄下

下面的例子是兩個bigdecimal相除,並保留十位小數。

BigDecimal totalMoney = new BigDecimal(99);
BigDecimal totalPerson = new BigDecimal(5);
BigDecimal money = totalMoney.divide(totalPerson,10,BigDecimal.ROUND_HALF_UP);

 divide方法有三個參數,第一個是除數,第二個scale是小數點後保留的位數,第三個是進位方式,

BigDecimal.ROUND_UP           要舍入的小數總是向前一位進位(不分正負);

BigDecimal.ROUND_DOWN    要舍入的小數總是直接砍掉,不進位(不分正負);

BigDecimal.ROUND_CEILING       7.61保留1位,變成7.7,-7.61保留一位,變成-7.6;

BigDecimal.ROUND_FLOOR         7.67保留1位,變成7.6,-7.61保留一位,變成-7.7;

BigDecimal.ROUND_HALF_UP       四捨五入,2.35保留1位,變成2.4

BigDecimal.ROUND_HALF_DOWN 四捨五入,2.35保留1位,變成2.3

後邊兩種的區別就是如果保留的位數的後一位如果正好是5的時候,一個捨棄掉,一個進位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章