← 返回首页

BigDecimal计算防止精度缺失

2026-05-14

User : #java #code

* @Controller {
desc 加
* @param v1
* @param v2
* @return
*/
public BigDecimal add(double v1, double v2) {//  v1 + v2
    BigDecimal b1 = new  BigDecimal(Double.toString(v1));
    BigDecimal b2 = new  BigDecimal(Double.toString(v2));
    return b1.add(b2);
}

/**
* @desc 减
* @param v1
* @param v2
* @return
*/
public BigDecimal sub(double v1, double v2) {
    BigDecimal b1 = new  BigDecimal(Double.toString(v1));
    BigDecimal b2 = new  BigDecimal(Double.toString(v2));
    return b1.subtract(b2);
}

/**
* @desc 乘
* @param v1
* @param v2
* @return
*/
public BigDecimal mul(double v1, double v2) {
    BigDecimal b1 = new  BigDecimal(Double.toString(v1));
    BigDecimal b2 = new  BigDecimal(Double.toString(v2));
    return b1.multiply(b2);
}

/**
* @desc 除
* @param v1
* @param v2
* @return
*/
public 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, BigDecimal.ROUND_HALF_UP);// 应对除不尽的情况
}
pigchen.github.io