1. 程式人生 > >BigDecimal用法總結

BigDecimal用法總結

BigDecimal常用於金額的計算,下面總結下這次專案中BigDecimal的用法。

1.加減乘除

2.設定精度

3.取反

加減乘除分別呼叫函式

        public BigDecimal add(BigDecimal value);
        public BigDecimal subtract(BigDecimal value);
        public BigDecimal multiply(BigDecimal value);
        public BigDecimal divide(BigDecimal value);

舉例:
        BigDecimal a=new BigDecimal(10.0);
        BigDecimal b=new BigDecimal(9.1);
        System.out.println(a.subtract(b));

精度設定,為什麼會設定精度,給大家看個效果

程式碼如下:

        BigDecimal abig=new BigDecimal(10.0);
        BigDecimal bbig=new BigDecimal(9.1);
        BigDecimal cbig=new BigDecimal(8.9);

        System.out.println(abig.subtract(bbig));
        System.out.println(abig.subtract(cbig));

結果如下:
0.9000000000000003552713678800500929355621337890625
1.0999999999999996447286321199499070644378662109375
並不是我們希望看到的0.9和1.1,原因就是轉成二進位制的時候會有精度問題,導致這樣的結果。所以我們可以在運算的時候加精度,也可以在例項化BigDecimal的時候用字串。

設定精度的方法:

        System.out.println(abig.subtract(bbig).setScale(2, BigDecimal.ROUND_HALF_UP));
        System.out.println(abig.subtract(cbig).setScale(2, BigDecimal.ROUND_HALF_UP));
這樣設定兩位精度就可以啦
0.90
1.10
字串例項化的方法:
        BigDecimal abig=new BigDecimal("10.0");
        BigDecimal bbig=new BigDecimal("9.1");
        BigDecimal cbig=new BigDecimal("8.9");


取反

因為Bigdecimal是無法直接用+-*/這些符號進行計算的,所以取反的時候也需要一個單獨的方法來實現:

        System.out.println(abig.negate());
這樣就會拿到它的相反數了:
-10.0
這些是這次專案中用到的點