package com.oishi.utils.common;
import java.math.BigDecimal;
public class MathArithmetic {
private static final int DEF_DIV_SCALE =10;
// 加法运算
public static double add(double v1,double v2) {
BigDecimal b1 =new BigDecimal(Double.toString(v1));
BigDecimal b2 =new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}
// 加法运算
public static double add(double... v1) {
BigDecimal b =new BigDecimal(0);
for (int i =0; i < v1.length; i++) {
BigDecimal b1 =new BigDecimal(Double.toString(v1[i]));
b = b.add(b1);
}
return b.doubleValue();
}
// 减法运算
public static double sub(double v1,double v2) {
BigDecimal b1 =new BigDecimal(Double.toString(v1));
BigDecimal b2 =new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
// 减法运算
public static double sub(double... v1) {
BigDecimal b =new BigDecimal(Double.toString(v1[0]));
for(int i=1;i
BigDecimal b1 =new BigDecimal(Double.toString(v1[i]));
b = b.subtract(b1);
}
return b.doubleValue();
}
// 乘法运算
public static double mul(double v1,double v2) {
BigDecimal b1 =new BigDecimal(Double.toString(v1));
BigDecimal b2 =new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
// 除法运算
public static double div(double v1,double v2) {
return div(v1, v2,DEF_DIV_SCALE);
}
// 除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。
public static double div(double v1,double v2,int scale) {
if (scale <0) {
throw new IllegalArgumentException("指定精度必须大于0");
}
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("指定精度必须大于0");
}
BigDecimal b =new BigDecimal(Double.toString(v));
BigDecimal one =new BigDecimal("1");
return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static void main(String args[]) {
System.out.println(sub(7,3,4,3));
}
}
网友评论