BigDecimal數值計算

2021-09-26 15:54:46 字數 2175 閱讀 5754

bigdecimal一共有4個構造方法:

**bigdecimal(int)**建立乙個具有引數所指定整數值的物件。

bigdecimal(double)建立乙個具有引數所指定雙精度值的物件。(不建議採用)

bigdecimal(long)建立乙個具有引數所指定長整數值的物件。

**bigdecimal(string) **建立乙個具有引數所指定以字串表示的數值的物件

加減乘除 絕對值,平方

//	直接用value寫數字的值	

bigdecimal num1 = new bigdecimal(0.005); //引數型別為double的構造方法的結果有一定的不可預知性

bigdecimal num2 = new bigdecimal(1000000);

bigdecimal num3 = new bigdecimal(-1000000);

// 使用string初始化數字

bigdecimal num11 = new bigdecimal("0.005"); //string 構造方法是完全可預知的

bigdecimal num22 = new bigdecimal("1000000");

bigdecimal num33 = new bigdecimal("-1000000");

system.out.println(num1 + "\n" + num11);

bigdecimal result1 = num1.add(num2);

bigdecimal result11= num11.add(num22);

bigdecimal result2 = num1.subtract(num2);

bigdecimal result22 = num11.subtract(num22);

bigdecimal result3 = num1.multiply(num2);

bigdecimal result33 = num11.multiply(num22);

bigdecimal result4 = num3.abs();

bigdecimal result44 = num33.abs();

bigdecimal result5 = num2.divide(num1,20,bigdecimal.round_half_up);

bigdecimal result55 = num22.divide(num11,20,bigdecimal.round_half_up);

system.out.println(result1);

system.out.println(result11);

system.out.println(result2);

system.out.println(result22);

system.out.println(result3);

system.out.println(result33);

system.out.println(result4);

system.out.println(result44);

system.out.println(result5);

system.out.println(result55);

bigdecimal num4 = new bigdecimal(4.5);

bigdecimal num5 = new bigdecimal("1.3");

bigdecimal num7 = num4.divide(num5, 5, roundingmode.half_up);

system.out.println(num7);

int result = num4.compareto(num5);

system.out.println(result);

bigdecimal result6 = num4.pow(2); //求x的n次方 x.pow(n)

system.out.println(result6);

結果:

使用的老鐵會發現在bigdecimal中為什麼推薦使用string而不是double型。然後具體的捨入方法沒有介紹大家可以參照下面的鏈結

商業計算 BigDecimal

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

手續費計算BigDecimal

public static bigdecimal ratecalc bigdecimal payamount,string paytype if paytype.equals alipay bigdecimal interest payamount.multiply rate 相乘 bigdecim...

BigDecimal加減乘除計算

bigdecimal num1 new bigdecimal 0.005 bigdecimal num2 new bigdecimal 1000000 bigdecimal num3 new bigdecimal 1000000 盡量用字串的形式初始化 bigdecimal num12 new bi...