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 }
原文地址:https://www.cnblogs.com/FlyingPuPu/p/6598451.html