BigDecimal用法總結

2021-07-12 05:57:35 字數 1677 閱讀 2479

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
這些是這次專案中用到的點

Bigdecimal常見各種用法

bigdecimal與int double string型別的相互轉換 int轉為bigdecimal int a 3 bigdecimal b new bigdecimal a bigdecimal轉為int bigdecimal b new bigdecimal 5 int a b.intval...

BigDecimal用法和注意點

不可變的 任意精度的有符號十進位制數。bigdecimal 由任意精度的整數非標度值 和 32 位的整數標度 scale 組成。如果為零或正數,則標度是小數點後的位數。如果為負數,則將該數的非標度值乘以 10 的負 scale 次冪。因此,bigdecimal 表示的數值是 unscaledvalu...

BigDecimal用法和注意點

不可變的 任意精度的有符號十進位制數。bigdecimal 由任意精度的整數非標度值 和 32 位的整數標度 scale 組成。如果為零或正數,則標度是小數點後的位數。如果為負數,則將該數的非標度值乘以 10 的負 scale 次冪。因此,bigdecimal 表示的數值是 unscaledvalu...