關於BigDecimal中divide方法中的BigDecimal.ROUND_HALF_UP和BigDecimal.ROUND_HALF_DOWN
2018年04月19日 20:18:38 一縷82年的清風 閱讀數:1179 標籤: java BigDecimaljava 更多
個人分類: java基礎
大家好,今天給大家說一下BigDecimal中divide方法中的BigDecimal.ROUND_HALF_UP和BigDecimal.ROUND_HALF_DOWN。這兩個類的用法其實在網上已經介紹的很多的。但是有一些注意事項還是要需要了解一下。
首先說一下用法,BigDecimal中的divide主要就是用來做除法的運算。其中有這麼一個方法.
public BigDecimal divide(BigDecimal divisor,int scale, int roundingMode)
第一個參數是除數,第二個參數代表保留幾位小數,第三個代表的是使用的模式。其中我們標題上就是其中的兩種
BigDecimal.ROUND_DOWN:直接省略多餘的小數,比如1.28如果保留1位小數,得到的就是1.2
BigDecimal.ROUND_UP:直接進位,比如1.21如果保留1位小數,得到的就是1.3
BigDecimal.ROUND_HALF_UP:四捨五入,2.35保留1位,變成2.4
BigDecimal.ROUND_HALF_DOWN:四捨五入,2.35保留1位,變成2.3
後邊兩種的區別就是如果保留的位數的後一位如果正好是5的時候,一個捨棄掉,一個進位。
看如下案例:
BigDecimal d1 = new BigDecimal (45); //45除以7=6.428571428571429
BigDecimal d2 = new BigDecimal (7);
d1.divide(d2,5,BigDecimal.ROUND_UP);//得到的結果就是6.42858,直接進位
但是要注意的點在這裏
就是
System.out.println(d1.divide(d2,3,BigDecimal.ROUND_HALF_UP));//
System.out.println(d1.divide(d2,3,BigDecimal.ROUND_HALF_DOWN));//
上面的代碼意思是結果保留3位,第四位是5,
如果我們按照上面的理解,得到的結果應該一個是6.429,一個是6.428
但是實際的運行結果都是6.429 。這裏要注意,這個怎麼看呢,如要注意,這兩個的本質都是四捨五入,如果你的結果總位數超過了你要保留的位數,都是按照四捨五入。
那麼什麼時候才按照進位和設爲進行運算呢,只有你的結果的位數恰好比要保留的位數多一位,並且最後一位是恰好是5,才按照之前的規則進行運算。好了,今天的分享就到這裏。
好了關於配置環境變量的問題我們就探討到這裏,如果大家有其他疑問,可在文章下留言,如果覺得文章對自己的學習有幫助,請關注我的博客,後面會有更多的文章發佈。也可以添加qq羣:767375013。裏邊有更多的文檔視頻資料,及線上免費公開課。希望和大家一起探討。