参考文档:https://blog.csdn.net/weixin_44421461/article/details/106726591
BigDecimal a = new BigDecimal(1.01);BigDecimal b = new BigDecimal(1.02);BigDecimal c = new BigDecimal("1.01");BigDecimal d = new BigDecimal("1.02");System.out.println(a.add(b));System.out.println(c.add(d));输出:2.03000000000000002664535259100375697016716003417968752.03
最精确的方法:
double 换成String 然后用构造方法创建 不会缺精度
/**** 加减乘除*/public class BigDecimalUtil {private BigDecimalUtil() {}// 加public static BigDecimal add(double v1, double v2) {// v1 + v2BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.add(b2);}// 减public static BigDecimal sub(double v1, double v2) {BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.subtract(b2);}// 乘public static BigDecimal mul(double v1, double v2) {BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.multiply(b2);}// 除public static BigDecimal div(double v1, double v2) {BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));// 2 = 保留小数点后两位 ROUND_HALF_UP = 四舍五入return b1.divide(b2, 2, RoundingMode.ROUND_HALF_UP);// 应对除不尽的情况}}
