1.计算的工具类代码如下:

package com.longjin.comm.utils;

import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * @Description:
 * @Author 何志鹏
 * @Date 2020/6/9 21:31
 * @Version 1.0
 */
public class BigDecimalUtils {

    /**
     * 小数的精度
     */
    private static int precision = 2;

    /* 两数相加
     * @param b1 操作数1
     * @param b2 操作数2
     * @return 结果
     */
    public static BigDecimal add(BigDecimal b1, BigDecimal b2) {
        if (b1 == null) {
            b1 = new BigDecimal(0);
        }
        if (b2 == null) {
            b2 = new BigDecimal(0);
        }
        return b1.add(b2);
    }

    /**
     * 两数相减
     * @param b1 操作数1
     * @param b2 操作数2
     * @return 结果
     */
    public static BigDecimal subtract(BigDecimal b1, BigDecimal b2) {
        if (b1 == null) {
            b1 = new BigDecimal(0);
        }
        if (b2 == null) {
            b2 = new BigDecimal(0);
        }
        return b1.subtract(b2);
    }

    /**
     * 两数相乘
     * @param b1 操作数1
     * @param b2 操作数2
     * @return 结果
     */
    public static BigDecimal multiply(BigDecimal b1, BigDecimal b2) {
        if (b1 == null) {
            b1 = new BigDecimal(0);
        }
        if (b2 == null) {
            b2 = new BigDecimal(0);
        }
        return b1.multiply(b2).setScale(precision, RoundingMode.HALF_UP);
    }

    /**
     * 两数相乘
     * @param b1 操作数1
     * @param b2 操作数2
     * @return 结果
     */
    public static BigDecimal multiply(BigDecimal b1, BigDecimal b2,int scale) {
        if (b1 == null) {
            b1 = new BigDecimal(0);
        }
        if (b2 == null) {
            b2 = new BigDecimal(0);
        }
        return b1.multiply(b2).setScale(scale,RoundingMode.HALF_UP);
    }

    /**
     * 大于
     * @param b1 操作数1
     * @param b2 操作数2
     * @return 结果
     */
    public static boolean greaterThan(BigDecimal b1, BigDecimal b2) {
        if (b1 == null) {
            b1 = new BigDecimal(0);
        }
        if (b2 == null) {
            b2 = new BigDecimal(0);
        }
        return b1.compareTo(b2)>0;
    }

    /**
     * 大于或等于
     * @param b1 操作数1
     * @param b2 操作数2
     * @return 结果
     */
    public static boolean greaterOrEquals(BigDecimal b1, BigDecimal b2) {
        if (b1 == null) {
            b1 = new BigDecimal(0);
        }
        if (b2 == null) {
            b2 = new BigDecimal(0);
        }
        return b1.compareTo(b2)>=0;
    }

    /**
     * 小于
     * @param b1 操作数1
     * @param b2 操作数2
     * @return 结果
     */
    public static boolean lessThan(BigDecimal b1, BigDecimal b2) {
        if (b1 == null) {
            b1 = new BigDecimal(0);
        }
        if (b2 == null) {
            b2 = new BigDecimal(0);
        }
        return b1.compareTo(b2) < 0;
    }

    /**
     * 小于或等于
     * @param b1 操作数1
     * @param b2 操作数2
     * @return 结果
     */
    public static boolean lessOrEquals(BigDecimal b1, BigDecimal b2) {
        if (b1 == null) {
            b1 = new BigDecimal(0);
        }
        if (b2 == null) {
            b2 = new BigDecimal(0);
        }
        return b1.compareTo(b2) <= 0;
    }

    /**
     * 等于
     * @param b1 操作数1
     * @param b2 操作数2
     * @return 结果
     */
    public static boolean equals(BigDecimal b1, BigDecimal b2) {
        if (b1 == null) {
            b1 = new BigDecimal(0);
        }
        if (b2 == null) {
            b2 = new BigDecimal(0);
        }
        return b1.compareTo(b2) == 0;
    }

    /**
     * 除法,默认留5位小数
     * @param b1 操作数1
     * @param b2 操作数2
     * @return
     */
    public static BigDecimal divide(BigDecimal b1, BigDecimal b2) {
        if(b1 == null) {
            return new BigDecimal(0);
        }
        if(b2  == null || equals(b2,new BigDecimal(0))){
            throw new ArithmeticException("b2 is zero ! ");
        }
        return b1.divide(b2, precision, RoundingMode.HALF_UP);
    }

    /**
     * 除法(需要给定小数位数)
     * @param b1 操作数1
     * @param b2 操作数2
     * @return
     */
    public static BigDecimal divide(BigDecimal b1, BigDecimal b2,int scale) {
        if(b1 == null) {
            return new BigDecimal(0);
        }
        if(b2  == null || equals(b2,new BigDecimal(0))){
            throw new ArithmeticException("b2 is zero ! ");
        }
        return b1.divide(b2, scale, RoundingMode.HALF_UP);
    }

    public static void main(String[] args) {
        BigDecimal  bigDec = new BigDecimal(1);
        BigDecimal  bigDec2 = new BigDecimal(2);
        System.err.println("加法计算========================"+ BigDecimalUtils.add(bigDec,bigDec2));
        System.err.println("减法计算========================"+ BigDecimalUtils.subtract(bigDec,bigDec2));
        System.err.println("乘法(保留两位小数)计算========================"+ BigDecimalUtils.multiply(bigDec,bigDec2));
        System.err.println("乘法(自定义保留位数)计算========================"+ BigDecimalUtils.multiply(bigDec,bigDec2,3));
        System.err.println("除法(保留两位小数)计算========================"+ BigDecimalUtils.divide(bigDec,bigDec2));
        System.err.println("除法(自定义保留位数)计算========================"+ BigDecimalUtils.divide(bigDec,bigDec2,3));
        System.err.println("大于比较========================"+ BigDecimalUtils.greaterThan(bigDec,bigDec2));
        System.err.println("大于或等于========================"+ BigDecimalUtils.greaterOrEquals(bigDec,bigDec2));
        System.err.println("小于比较========================"+ BigDecimalUtils.lessThan(bigDec,bigDec2));
        System.err.println("小于或等于比较========================"+ BigDecimalUtils.lessOrEquals(bigDec,bigDec2));
        System.err.println("等于========================"+ BigDecimalUtils.equals(bigDec,bigDec2));
    }

}

2.运行的main方法结果如下:

Java BigDecimal类型的 加减乘除大于 小于等于计算

 

 

 

 

 

相关文章:

  • 2022-02-21
  • 2021-12-09
  • 2021-11-23
  • 2021-12-07
  • 2021-05-31
猜你喜欢
  • 2021-12-30
  • 2021-11-28
  • 2021-12-29
相关资源
相似解决方案