JAVA BigDecimal 高精度运算
文章参考一位博友,由于时间太久忘了链接,见谅!
1 public class BigDecimalUtils { 2 3 private static final int DIV_SCALE = 10;// 除法精度(除不尽时保留10为小数) 4 5 /** 小数精确加法 */ 6 public static double add(double d1, double d2) { 7 BigDecimal bd1 = BigDecimal.valueOf(d1); 8 BigDecimal bd2 = BigDecimal.valueOf(d2); 9 return bd1.add(bd2).doubleValue(); 10 } 11 12 /** 小数精确减法 */ 13 public static double sub(double d1, double d2) { 14 BigDecimal bd1 = BigDecimal.valueOf(d1); 15 BigDecimal bd2 = BigDecimal.valueOf(d2); 16 return bd1.subtract(bd2).doubleValue(); 17 } 18 19 /** 小数精确乘法 */ 20 public static double mul(double d1, double d2) { 21 BigDecimal bd1 = BigDecimal.valueOf(d1); 22 BigDecimal bd2 = BigDecimal.valueOf(d2); 23 return bd1.multiply(bd2).doubleValue(); 24 } 25 26 /** 小数精确除法 */ 27 public static double div(double d1, double d2) { 28 BigDecimal bd1 = BigDecimal.valueOf(d1); 29 BigDecimal bd2 = BigDecimal.valueOf(d2); 30 /* 31 * 当除不尽时,以四舍五入的方式(关于除不尽后的值的处理方式有很多种)保留小数点后10位小数 32 */ 33 return bd1.divide(bd2, DIV_SCALE, BigDecimal.ROUND_HALF_UP) 34 .doubleValue(); 35 } 36 }