BigDecimal用法總結
阿新 • • 發佈:2018-12-24
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.9和1.1,原因就是轉成二進位制的時候會有精度問題,導致這樣的結果。所以我們可以在運算的時候加精度,也可以在例項化BigDecimal的時候用字串。0.9000000000000003552713678800500929355621337890625 1.0999999999999996447286321199499070644378662109375
設定精度的方法:
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
這些是這次專案中用到的點