1 BigDecimal工具类
package com.isoftstone.hig.bms.service.utils;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class BigDecimalUtils {
private static final String ZERO = "0";
public static BigDecimal add(BigDecimal b1, BigDecimal b2) {
if (b1 == null) {
b1 = new BigDecimal(ZERO);
}
if (b2 == null) {
b2 = new BigDecimal(ZERO);
}
return b1.add(b2);
}
public static BigDecimal subtract(BigDecimal b1, BigDecimal b2) {
if (b1 == null) {
b1 = new BigDecimal(ZERO);
}
if (b2 == null) {
b2 = new BigDecimal(ZERO);
}
return b1.subtract(b2);
}
public static BigDecimal multiply(BigDecimal b1, BigDecimal b2, int scale) {
if (b1 == null) {
b1 = new BigDecimal(ZERO);
}
if (b2 == null) {
b2 = new BigDecimal(ZERO);
}
return b1.multiply(b2).setScale(scale, RoundingMode.HALF_UP);
}
public static BigDecimal multiply(BigDecimal b1, BigDecimal b2) {
if (b1 == null) {
b1 = new BigDecimal(ZERO);
}
if (b2 == null) {
b2 = new BigDecimal(ZERO);
}
return b1.multiply(b2);
}
public static boolean greaterThan(BigDecimal b1, BigDecimal b2) {
if (b1 == null) {
b1 = new BigDecimal(ZERO);
}
if (b2 == null) {
b2 = new BigDecimal(ZERO);
}
return b1.compareTo(b2) > 0;
}
public static boolean greaterOrEquals(BigDecimal b1, BigDecimal b2) {
if (b1 == null) {
b1 = new BigDecimal(ZERO);
}
if (b2 == null) {
b2 = new BigDecimal(ZERO);
}
return b1.compareTo(b2) >= 0;
}
public static boolean lessThan(BigDecimal b1, BigDecimal b2) {
if (b1 == null) {
b1 = new BigDecimal(ZERO);
}
if (b2 == null) {
b2 = new BigDecimal(ZERO);
}
return b1.compareTo(b2) < 0;
}
public static boolean lessOrEquals(BigDecimal b1, BigDecimal b2) {
if (b1 == null) {
b1 = new BigDecimal(ZERO);
}
if (b2 == null) {
b2 = new BigDecimal(ZERO);
}
return b1.compareTo(b2) <= 0;
}
public static boolean equals(BigDecimal b1, BigDecimal b2) {
if (b1 == null) {
b1 = new BigDecimal(ZERO);
}
if (b2 == null) {
b2 = new BigDecimal(ZERO);
}
return b1.compareTo(b2) == 0;
}
public static BigDecimal divide(BigDecimal b1, BigDecimal b2) {
if (b1 == null) {
b1 = new BigDecimal(ZERO);
}
if (b2 == null || equals(b2, new BigDecimal(ZERO))) {
throw new ArithmeticException("b2 is zero !");
}
return b1.divide(b2);
}
public static BigDecimal divide(BigDecimal b1, BigDecimal b2, int scale) {
if (b1 == null) {
b1 = new BigDecimal(ZERO);
}
if (b2 == null || equals(b2, new BigDecimal(ZERO))) {
throw new ArithmeticException("b2 is zero !");
}
return b1.divide(b2, scale, RoundingMode.HALF_UP);
}
}
2 处理小数:setScale()函数
setScale(1) 表示保留一位小数,默认用四舍五入方式
setScale(1,BigDecimal.ROUND_DOWN) 直接删除多余的小数位,如2.35会变成2.3
setScale(1,BigDecimal.ROUND_UP) 进位处理,2.35变成2.4
setScale(1,BigDecimal.ROUND_HALF_UP) 四舍五入(5则向上入),2.35变成2.4
setScaler(1,BigDecimal.ROUND_HALF_DOWN) 四舍五入(5则向下舍),2.35变成2.3