Java中Double数据的计算

BigDecimal.setScale()// 该方法用于格式化小数点
setScale(1)// 表示保留一位小数,默认用四舍五入方式
setScale(1,BigDecimal.ROUND_DOWN)//直接删除多余的小数位,如2.35会变成2.3
setScale(1,BigDecimal.ROUND_UP)//进位处理,2.35变成2.4
setScale(1,BigDecimal.ROUND_HALF_UP)//四舍五入,2.35变成2.4
setScaler(1,BigDecimal.ROUND_HALF_DOWN)//四舍五入,2.35变成2.3,如果是5则向下舍


/**
 * double数据进行取精度.
 *
 * @param value        double数据.
 * @param scale        精度位数(保留的小数位数).
 * @param roundingMode 精度取值方式. roundingMode 枚举
 * @return 精度计算后的数据.
 */
public static double round(double value, int scale, int roundingMode) {
    BigDecimal bd = new BigDecimal(String.valueOf(value));
    bd = bd.setScale(scale, roundingMode);
    double d = bd.doubleValue();
    bd = null;
    return d;
}

/**
 * double 相加
 *
 * @param d1
 * @param d2
 * @return
 */
public static double sum(double d1, double d2) {
    BigDecimal bd1 = new BigDecimal(Double.toString(d1));
    BigDecimal bd2 = new BigDecimal(Double.toString(d2));
    return bd1.add(bd2).doubleValue();
}


/**
 * double 相减
 *
 * @param d1
 * @param d2
 * @return
 */

public static double sub(double d1, double d2) {
    BigDecimal bd1 = new BigDecimal(Double.toString(d1));
    BigDecimal bd2 = new BigDecimal(Double.toString(d2));
    return bd1.subtract(bd2).doubleValue();
}

/**
 * double 乘法
 *
 * @param d1
 * @param d2
 * @return
 */
public static double mul(double d1, double d2) {
    BigDecimal bd1 = new BigDecimal(Double.toString(d1));
    BigDecimal bd2 = new BigDecimal(Double.toString(d2));
    return bd1.multiply(bd2).doubleValue();
}

/**
 * 乘法
 *
 * @param data
 * @return
 */
public static Double mul(Double[] data) {
    BigDecimal total = new BigDecimal(1d);
    for (int i = 0; i < data.length; i++) {
        BigDecimal bd = new BigDecimal(data[i]);
        total = total.multiply(bd);
    }
    return total.doubleValue();
}

/**
 * double 除法
 *
 * @param d1
 * @param d2
 * @param scale 四舍五入 小数点位数
 * @return
 */
public static double div(double d1, double d2, int scale) {
    // 当然在此之前,你要判断分母是否为0    // 0你可以根据实际需求做相应的处理
    if (d2 == 0) {
        return 0;
    }
    BigDecimal bd1 = new BigDecimal(Double.toString(d1));
    BigDecimal bd2 = new BigDecimal(Double.toString(d2));
    return bd1.divide(bd2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
发布者:songJian   点击数:2030   发布时间:2020-02-10 22:40:32   更新时间:2020-02-10 22:40:32
正在加载评论...
相关文章