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方法结果如下: