public class MyBigDecimal {
public static String add(double d1, double d2) { // 进行加法运算
String st;
DecimalFormat df = new DecimalFormat("0.00");
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
st = df.format(b1.add(b2).doubleValue());
return st;
}
public static double sub(double d1, double d2) { // 进行减法运算
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.subtract(b2).doubleValue();
}
public static double mul(double d1, double d2) { // 进行乘法运算
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.multiply(b2).doubleValue();
}
public static double div(double d1, double d2, int len) {// 进行除法运算
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.divide(b2, len, BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static double round(double d,int len) { // 进行四舍五入操作
BigDecimal b1 = new BigDecimal(d);
BigDecimal b2 = new BigDecimal(1);
// 任何一个数字除以1都是原数字
// ROUND_HALF_UP是BigDecimal的一个常量,表示进行四舍五入的操作
return b1.divide(b2, len, BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static double div(double v1,double v2,int scale){
if(scale<0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static double round(double v,int scale){
if(scale<0){
throw new IllegalArgumentException("The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
(新增)
public static float calcFloatValue(float t1,float t2,String type){
BigDecimal a = new BigDecimal(String.valueOf(t1));
BigDecimal b = new BigDecimal(String.valueOf(t2));
float retValue=0f;
switch (type){
case "add":
retValue=a.add(b).floatValue();
break;
case "subtract":
retValue=a.subtract(b).floatValue();
break;
case "multiply":
retValue=a.multiply(b).floatValue();
break;
case "divide":
retValue=a.divide(b).floatValue();
break;
}
return retValue;
}
public static double calcDoubleValue(double t1,double t2,String type){
BigDecimal a = new BigDecimal(String.valueOf(t1));
BigDecimal b = new BigDecimal(String.valueOf(t2));
double retValue=0f;
switch (type){
case "add":
retValue=a.add(b).doubleValue();
break;
case "subtract":
retValue=a.subtract(b).doubleValue();
break;
case "multiply":
retValue=a.multiply(b).doubleValue();
break;
case "divide":
retValue=a.divide(b).doubleValue();
break;
}
return retValue;
}