importjava.math.BigDecimal;
public class Arith {
private static finalint DEF_DIV_SCALE = 10;
/**
* * 两个Double数相加 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Doubleadd(Double v1, Double v2) {
BigDecimal b1 = newBigDecimal(v1.toString());
BigDecimal b2 = newBigDecimal(v2.toString());
return new Double(b1.add(b2).doubleValue());
}
/**
* * 两个Double数相减 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Doublesub(Double v1, Double v2) {
BigDecimal b1 = newBigDecimal(v1.toString());
BigDecimal b2 = newBigDecimal(v2.toString());
return newDouble(b1.subtract(b2).doubleValue());
}
/**
* * 两个Double数相乘 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Doublemul(Double v1, Double v2) {
BigDecimal b1 = newBigDecimal(v1.toString());
BigDecimal b2 = newBigDecimal(v2.toString());
return newDouble(b1.multiply(b2).doubleValue());
}
/**
* * 两个Double数相除 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Doublediv(Double v1, Double v2) {
BigDecimal b1 = newBigDecimal(v1.toString());
BigDecimal b2 = newBigDecimal(v2.toString());
return new Double(b1.divide(b2,DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP)
.doubleValue());
}
/**
* *两个Double数相除,并保留scale位小数 *
*
* @param v1 *
* @param v2 *
* @param scale *
* @return Double
*/
public static Doublediv(Double v1, Double v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positiveinteger or zero");
}
BigDecimal b1 = newBigDecimal(v1.toString());
BigDecimal b2 = newBigDecimal(v2.toString());
return new Double(b1.divide(b2, scale,BigDecimal.ROUND_HALF_UP).doubleValue());
}
}