1. 程式人生 > >java.math.BigDecimal類multiply的使用

java.math.BigDecimal類multiply的使用


public class Arith {
/**
 * 提供精確加法計算的add方法
 * @param value1 被加數
 * @param value2 加數
 * @return 兩個引數的和
 */
public static double add(double value1,double value2){
BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
return b1.add(b2).doubleValue();
}

/**
 * 提供精確減法運算的sub方法
 * @param value1 被減數
 * @param value2 減數
 * @return 兩個引數的差
 */
public static double sub(double value1,double value2){
BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
return b1.subtract(b2).doubleValue();
}

/**
 * 提供精確乘法運算的mul方法
 * @param value1 被乘數
 * @param value2 乘數
 * @return 兩個引數的積
 */
public static double mul(double value1,double value2){
BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
return b1.multiply(b2).doubleValue();
}

/**
 * 提供精確的除法運算方法div
 * @param value1 被除數
 * @param value2 除數
 * @param scale 精確範圍
 * @return 兩個引數的商
 * @throws IllegalAccessException
 */
public static double div(double value1,double value2,int scale) throws IllegalAccessException{
//如果精確範圍小於0,丟擲異常資訊
if(scale<0){ 
  throw new IllegalAccessException("精確度不能小於0");
}
BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
return b1.divide(b2, scale).doubleValue();
}
}

參考:http://www.jb51.net/article/43513.htm