already

【工具类】BigDecimal常用功能

2022-08-17  本文已影响0人  小胖学编程

一些常见的功能的工具类汇总:

  1. 比较大小;
  2. 加减乘除;
  3. 转化成百分比;
  4. 保留两位小数
import java.math.BigDecimal;
import java.math.RoundingMode;

public abstract class BigDecimalUtils {
    /**
     * a < b
     */
    public static boolean lessThan(BigDecimal a, BigDecimal b) {
        return a.compareTo(b) == -1;
    }

    /**
     * a == b
     */
    public static boolean equalsThan(BigDecimal a, BigDecimal b) {
        return a.compareTo(b) == 0;
    }

    /**
     * a > b
     */
    public static boolean greaterThan(BigDecimal a, BigDecimal b) {
        return a.compareTo(b) == 1;
    }

    /**
     * a >= b
     */
    public static boolean greaterEqualsThan(BigDecimal a, BigDecimal b) {
        return a.compareTo(b) > -1;
    }

    /**
     * a <= b
     */
    public static boolean lessEqualsThan(BigDecimal a, BigDecimal b) {
        return a.compareTo(b) < 1;
    }

    /**
     * a + b
     */
    public static BigDecimal add(BigDecimal a, BigDecimal b) {
        return a.add(b);
    }

    /**
     * a - b
     */
    public static BigDecimal subtract(BigDecimal a, BigDecimal b) {
        return a.subtract(b);
    }

    /**
     * a * b
     */
    public static BigDecimal multiply(BigDecimal a, BigDecimal b) {
        return a.multiply(b);
    }

    /**
     * a / b
     *
     * @return 保留两位小数
     */
    public static BigDecimal divide(BigDecimal a, BigDecimal b) {
        return a.divide(b, 2, RoundingMode.HALF_UP);
    }

    /**
     * a/b * 100
     *
     * @return 保留两位小数的百分比
     */
    public static BigDecimal divide2Percentage(BigDecimal a, BigDecimal b) {
        return a.divide(b, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100))
                .divide(BigDecimal.valueOf(1), 2, RoundingMode.HALF_UP);
    }

    /**
     * a * 100%
     *
     * @return 保留两位小数
     */
    public static BigDecimal toPercentage(BigDecimal a) {
        return a.multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(1), 2, RoundingMode.HALF_UP);
    }

}
上一篇下一篇

猜你喜欢

热点阅读