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...