BigDecimal

關於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。裏邊有更多的文檔視頻資料,及線上免費公開課。希望和大家一起探討。

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