转至http://www.cnblogs.com/shown/p/6305880.html
double类型四则运算例子:
1、相加
1 public static double add(double a1, double b1) { 2 BigDecimal a2 = new BigDecimal(Double.toString(a1)); 3 BigDecimal b2 = new BigDecimal(Double.toString(b1)); 4 return a2.add(b2).doubleValue(); 5 }
2、相减
1 public static double sub(double a1, double b1) { 2 BigDecimal a2 = new BigDecimal(Double.toString(a1)); 3 BigDecimal b2 = new BigDecimal(Double.toString(b1)); 4 return a2.subtract(b2).doubleValue(); 5 }
3、相乘
1 public static double mul(double a1, double b1) { 2 BigDecimal a2 = new BigDecimal(Double.toString(a1)); 3 BigDecimal b2 = new BigDecimal(Double.toString(b1)); 4 return a2.multiply(b2).doubleValue(); 5 }
4、相除
1 public static double div(double a1, double b1, int scale) { 2 if (scale < 0) { 3 throw new IllegalArgumentException("error"); 4 } 5 BigDecimal a2 = new BigDecimal(Double.toString(a1)); 6 BigDecimal b2 = new BigDecimal(Double.toString(b1)); 7 return a2.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); 8 }
scale参数为除不尽时,指定精度
TIP: 创建BigDecimal调用静态方法初始化更方便(BigDecimal.valueOf(XXX)):
BigDecimal.valueOf(8).add(BigDecimal.valueOf(0.2)).doubleValue()