package cn.zykj.util;
import java.math.BigDecimal;
/**
* BigDecimal 工具类
*
* @author wlj
*/
public class BigDecimalUtil {
/**
* BigDecimal 安全加法运算
*
* @return
*/
public static BigDecimal safeAdd(BigDecimal b1, BigDecimal... bn) {
if (null == b1) {
b1 = BigDecimal.ZERO;
}
if (null != bn) {
for (BigDecimal b : bn) {
b1 = b1.add(null == b ? BigDecimal.ZERO : b);
}
}
return b1;
}
/**
* BigDecimal 安全减法运算
*
* @return
*/
public static BigDecimal safeSubtract(BigDecimal b1, BigDecimal... bn) {
if (null == b1) {
b1 = BigDecimal.ZERO;
}
BigDecimal r = b1;
if (null != bn) {
for (BigDecimal b : bn) {
r = r.subtract((null == b ? BigDecimal.ZERO : b));
}
}
return r;
}
/**
* BigDecimal 安全乘法运算
*
* @return
*/
public static BigDecimal safeMultiply(BigDecimal b1, BigDecimal b2) {
if (null == b1) { return BigDecimal.ZERO; }
if (null == b2) { return BigDecimal.ZERO; }
return b1.multiply(b2).setScale(4, BigDecimal.ROUND_HALF_UP); // 保留4位小数
}
/**
* BigDecimal 安全除法运算
*
* @return
*/
public static BigDecimal safeDivide(BigDecimal b1, BigDecimal b2) {
if (null == b1 || null == b2) {
return BigDecimal.ZERO;
}
try {
return b1.divide(b2, 4, BigDecimal.ROUND_HALF_UP); // 保留4位小数
} catch (Exception e) {
return BigDecimal.ZERO;
}
}
/**
* 字符串转换BigDecimal
*
* @param value 值
* @return
* @author wlj
*/
public static BigDecimal stringToBigDecimal(String value) {
return new BigDecimal(value);
}
/**
* 判断num1是否小于num2
*
* @param num1
* @param num2
* @return num1小于num2返回true
*/
public static boolean lessThan(BigDecimal num1, BigDecimal num2) {
if (null == num1) { num1 = BigDecimal.ZERO; }
if (null == num2) { num2 = BigDecimal.ZERO; }
return num1.compareTo(num2) == -1;
}
/**
* 判断num1是否小于等于num2
*
* @param num1
* @param num2
* @return num1小于或者等于num2返回true
*/
public static boolean lessEqual(BigDecimal num1, BigDecimal num2) {
if (null == num1) { num1 = BigDecimal.ZERO; }
if (null == num2) { num2 = BigDecimal.ZERO; }
return (num1.compareTo(num2) == -1) || (num1.compareTo(num2) == 0);
}
/**
* 判断num1是否大于num2
*
* @param num1
* @param num2
* @return num1大于num2返回true
*/
public static boolean greaterThan(BigDecimal num1, BigDecimal num2) {
if (null == num1) { num1 = BigDecimal.ZERO; }
if (null == num2) { num2 = BigDecimal.ZERO; }
return num1.compareTo(num2) == 1;
}
/**
* 判断num1是否大于等于num2
*
* @param num1
* @param num2
* @return num1大于或者等于num2返回true
*/
public static boolean greaterEqual(BigDecimal num1, BigDecimal num2) {
if (null == num1) { num1 = BigDecimal.ZERO; }
if (null == num2) { num2 = BigDecimal.ZERO; }
return (num1.compareTo(num2) == 1) || (num1.compareTo(num2) == 0);
}
/**
* 判断num1是否等于num2
*
* @param num1
* @param num2
* @return num1等于num2返回true
*/
public static boolean equal(BigDecimal num1, BigDecimal num2) {
if (null == num1) { num1 = BigDecimal.ZERO; }
if (null == num2) { num2 = BigDecimal.ZERO; }
return num1.compareTo(num2) == 0;
}
}