java BigDecimal 工具类

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;  
	} 
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值