前言
需要计算的场景绕不过去会使用BigDecimal类,可频繁的判空让代码可读性下降也使代码冗余度增高,不判空又容易报空指针异常,而且有些场景下的计算,结果为空时需要返回null,所以也不可以将将BigDecimal类型的值都初始化为0,会让运算结果产生歧义。为解决上述痛点,于是整理了一个工具类供所有项目一起使用
工具类支持功能
- 加减乘除、累加、倍数运算。
- Integer、Long、Float、Double、String、Object转为BigDecimal。
- 除法四舍五入并默认保留20位小数点。
- BigDecimal转为String字符串,并禁止用科学计数法显示结果。
- 小数点位数保留。
- 多种数据类型间混合运算(如Double和Long转为BigDecimal运算)
- 以上所有计算,支持所有入参为空时运算
工具类源码
import java.math.BigDecimal;
/**
* @author dengcs
* @description: BigDecimal运算工具类
* @create 2020-10-10 14:14
*/
public class DecimalUtils {
/**
* 加法计算(result = x + y)
*
* @param x 被加数(可为null)
* @param y 加数 (可为null)
* @return 和 (可为null)
* @author dengcs
*/
public static BigDecimal add(BigDecimal x, BigDecimal y) {
if (x == null) {
return y;
}
if (y == null) {
return x;
}
return x.add(y);
}
/**
* 加法计算(result = a + b + c + d)
*
* @param a 被加数(可为null)
* @param b 加数(可为null)
* @param c 加数(可为null)
* @param d 加数(可为null)
* @return BigDecimal (可为null)
* @author dengcs
*/
public static BigDecimal