package com.moral.util; import java.math.BigDecimal; /** * @ClassName MathUtils * @Description 运算工具类 * @Author 陈凯裕 * @Date 2021/9/13 9:54 * @Version TODO **/ public class MathUtils { /** * @Description: 计算double类型加法 * @Param: [v1, v2] * @return: double * @Author: 陈凯裕 * @Date: 2021/9/13 */ public static double add(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue(); } /** * @Description: 计算double类型减法 * @Param: [v1, v2] * @return: double * @Author: 陈凯裕 * @Date: 2021/9/13 */ public static double sub(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.subtract(b2).doubleValue(); } /** * @Description: 计算double类型乘法 * @Param: [v1, v2] * @return: double * @Author: 陈凯裕 * @Date: 2021/9/13 */ public static double mul(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.multiply(b2).doubleValue(); } /** * @Description: 除法,accurate为保留小数位 * @Param: [a, b, accurate] * @return: double * @Author: 陈凯裕 * @Date: 2021/11/2 */ public static double division(double a, double b,int accurate) { if (accurate < 0) { throw new RuntimeException("精确度必须是正整数或零"); } BigDecimal b1 = new BigDecimal(a); BigDecimal b2 = new BigDecimal(b); return b1.divide(b2, accurate, BigDecimal.ROUND_HALF_UP).doubleValue(); } }