商業計算 BigDecimal

2021-08-25 16:24:19 字數 2441 閱讀 7041

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

另外,bigdecimal 類提供以下操作:算術、標度操作、捨入、比較、雜湊演算法和格式轉換。tostring() 方法提供 bigdecimal 的規範表示形式。

public class bigdecimalnewutil 

/*** 提供精確的加法運算

* @param val1 被加數

* @param val2 加數

* @return 和

*/public static double add(string val1, string val2)

/*** 提供帶捨入模式的加法運算

* @param val1 被加數

* @param val2 加數

* @param scale 捨入精度

* @param roundingmode 捨入模式

* @return 捨入和

*/public static double add(string val1, string val2, int scale, roundingmode roundingmode)

/*** 提供指定和有效數字的加法運算

* @param val1 被加數

* @param val2 加數

* @param mctx 指定和有效數字及捨入模式的context

* @return 捨入和

*/public static string add(string val1, string val2, mathcontext mctx)

/*** 提供精確的減法運算

* @param val1 被減數

* @param val2 減數

* @return 差

*/public static double subtract(string val1, string val2)

/*** 提供捨入的減法運算

* @param val1 被減數

* @param val2 減數

* @param scale 捨入精度

* @param roundingmode 捨入模式

* @return 捨入差

*/public static double subtract(string val1, string val2, int scale, roundingmode roundingmode)

/*** 提供精確的乘法運算

* @param val1 被乘數

* @param val2 乘數

* @return 積

*/public static double multiply(string val1, string val2)

/*** 提供捨入的乘法運算

* @param val1 被乘數

* @param val2 乘數

* @param scale 捨入精度

* @param roundingmode 捨入模式

* @return 捨入積

*/public static double multiply(string val1, string val2, int scale, roundingmode roundingmode)

/*** 提供帶指定精度的除法

* @param val1 被除數

* @param val2 除數

* @param scale 捨入精度

* @param roundingmode 捨入模式

* @return 捨入商

*/public static double divide(string val1, string val2, int scale, roundingmode roundingmode)

bigdecimal bval1= new bigdecimal(val1);

bigdecimal bval2 = new bigdecimal(val2);

return bval1.divide(bval2, scale, roundingmode).doublevalue();

}/**

* 提供精確的小數字捨入處理

* @param val 需要捨入的數字

* @param scale 小數點後保留幾位

* @param roundingmode 捨入模式

* @return 捨入後的結果

*/public static double round(double val, int scale, roundingmode roundingmode)

}

BigDecimal數值計算

bigdecimal一共有4個構造方法 bigdecimal int 建立乙個具有引數所指定整數值的物件。bigdecimal double 建立乙個具有引數所指定雙精度值的物件。不建議採用 bigdecimal long 建立乙個具有引數所指定長整數值的物件。bigdecimal string 建...

手續費計算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...