DoubleValueUtils.java 2.62 KB
package com.irrigation.icl.utils;

import java.math.BigDecimal;
import java.util.Optional;

/**
 * @description: 浮点数操作工具类
 * @Author: yangLang
 * @CreateDate: 2020/4/29 16:09
 */
public class DoubleValueUtils {

    /**
     * 保留位数
     */
    private final static int SCALE = 4;

    private DoubleValueUtils() {
    }

    /**
     * 计算两个浮点数之和
     *
     * @param value    加数
     * @param addValue 被加数
     * @return 返回结果四舍五入,保留4为小数
     * @Author: yangLang
     */
    public static Double doubleAddEx(Double value, Double addValue) {
        value = Optional.ofNullable(value).orElse(0.0);
        addValue = Optional.ofNullable(addValue).orElse(0.0);
        return new BigDecimal(value.toString()).add(new BigDecimal(addValue.toString()))
                .setScale(SCALE, BigDecimal.ROUND_HALF_UP)
                .doubleValue();
    }

    /**
     * 计算两个浮点数之差
     *
     * @param value    减数
     * @param addValue 被减数
     * @return 返回结果四舍五入,保留4为小数
     * @Author: yangLang
     */
    public static Double doubleSubEx(Double value, Double addValue) {
        value = Optional.ofNullable(value).orElse(0.0);
        addValue = Optional.ofNullable(addValue).orElse(0.0);
        return new BigDecimal(value.toString()).subtract(new BigDecimal(addValue.toString()))
                .setScale(SCALE, BigDecimal.ROUND_HALF_UP)
                .doubleValue();
    }

    /**
     * 计算两个浮点数之积
     *
     * @param value    乘数
     * @param addValue 被乘数
     * @return 返回结果四舍五入,保留4为小数
     * @Author: yangLang
     */
    public static Double doubleMultiEx(Double value, Double addValue) {
        value = Optional.ofNullable(value).orElse(0.0);
        addValue = Optional.ofNullable(addValue).orElse(0.0);
        return new BigDecimal(value.toString()).multiply(new BigDecimal(addValue.toString()))
                .setScale(SCALE, BigDecimal.ROUND_HALF_UP)
                .doubleValue();
    }

    /**
     * 计算两个浮点数之商
     *
     * @param value    除数
     * @param addValue 被除数
     * @return 返回结果四舍五入,保留4为小数
     * @Author: yangLang
     */
    public static Double doubleDivEx(Double value, Double addValue) {
        value = Optional.ofNullable(value).orElse(0.0);
        addValue = Optional.ofNullable(addValue).orElse(0.0);
        return new BigDecimal(value.toString()).divide(new BigDecimal(addValue.toString()))
                .setScale(SCALE, BigDecimal.ROUND_HALF_UP)
                .doubleValue();
    }
}