//两个Double数相加


public static Double add(Double v1,Double v2){

  BigDecimal b1 = new BigDecimal(v1.toString());

  BigDecimal b2 = new BigDecimal(v2.toString());

  return b1.add(b2).doubleValue();

  }




//两个Double数相减


public static Double sub(Double v1,Double v2){

  BigDecimal b1 = new BigDecimal(v1.toString());

  BigDecimal b2 = new BigDecimal(v2.toString());

  return b1.subtract(b2).doubleValue();

  }




// 两个Double数相乘


public static Double mul(Double v1,Double v2){

  BigDecimal b1 = new BigDecimal(v1.toString());

  BigDecimal b2 = new BigDecimal(v2.toString());

  return b1.multiply(b2).doubleValue();

  }




//两个Double数相除


public static Double div(Double v1,Double v2){

  BigDecimal b1 = new BigDecimal(v1.toString());

  BigDecimal b2 = new BigDecimal(v2.toString());

  return b1.divide(b2,DEF_DIV_SCALE,BigDecimal.ROUND_HALF_UP).doubleValue();

  }




//两个Double数相除,并保留scale位小数


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 b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

  }


 //进行四舍五入


   

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();

  }


更多关于BigDecimal的用法详见:http://www.apihome.cn/api/java/BigDecimal.html


原文链接:https://blog.csdn.net/mlgglm/article/details/48241865

欢迎留言