double类型的运算

来源:互联网 发布:淘宝客定向计划描述 编辑:程序博客网 时间:2024/05/16 07:13
import java.math.BigDecimal;    public class Arith {  private static final int DEF_DIV_SCALE = 10;    /** * * 两个Double数相加 * *  * @param v1 * * @param v2 * * @return Double */  public static Double add(Double v1, Double v2) {     BigDecimal b1 = new BigDecimal(v1.toString());     BigDecimal b2 = new BigDecimal(v2.toString());     return new Double(b1.add(b2).doubleValue());  }    /** * * 两个Double数相减 * *  * @param v1 * * @param v2 * * @return Double */  public static Double sub(Double v1, Double v2) {     BigDecimal b1 = new BigDecimal(v1.toString());     BigDecimal b2 = new BigDecimal(v2.toString());     return new Double(b1.subtract(b2).doubleValue());  }    /** * * 两个Double数相乘 * *  * @param v1 * * @param v2 * * @return Double */  public static Double mul(Double v1, Double v2) {     BigDecimal b1 = new BigDecimal(v1.toString());     BigDecimal b2 = new BigDecimal(v2.toString());     return new Double(b1.multiply(b2).doubleValue());  }    /** * * 两个Double数相除 * *  * @param v1 * * @param v2 * * @return Double */  public static Double div(Double v1, Double v2) {     BigDecimal b1 = new BigDecimal(v1.toString());     BigDecimal b2 = new BigDecimal(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 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(v1.toString());     BigDecimal b2 = new BigDecimal(v2.toString());     return new Double(b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue());  }  }  

0 0