在Java中,BigDecimal是一个用于进行高精度计算的类,特别适合处理货币计算等对精度有严格
要求的场景。下面我将为你提供一个简单的BigDecimalUtils工具类示例,该类包含了一些常见的数
学运算方法,如加、减、乘、除以及比较等。
import java.math.BigDecimal;
import java.math.RoundingMode;
public class BigDecimalUtils {
private static final int DEFAULT_SCALE = 2; // 默认保留小数点后两位
private static final RoundingMode DEFAULT_ROUNDING_MODE = RoundingMode.HALF_UP; // 默认四舍五入方式
/**
* 加法运算
* @param v1 被加数
* @param v2 加数
* @return 结果
*/
public static BigDecimal add(BigDecimal v1, BigDecimal v2) {
return v1.add(v2);
}
/**
* 减法运算
* @param v1 被减数
* @param v2 减数
* @return 结果
*/
public static BigDecimal subtract(BigDecimal v1, BigDecimal v2) {
return v1.subtract(v2);
}
/**
* 乘法运算
* @param v1 被乘数
* @param v2 乘数
* @return 结果
*/
public static BigDecimal multiply(BigDecimal v1, BigDecimal v2) {
return v1.multiply(v2);
}
/**
* 除法运算
* @param v1 被除数
* @param v2 除数
* @return 结果
*/
public static BigDecimal divide(BigDecimal v1, BigDecimal v2) {
return v1.divide(v2, DEFAULT_SCALE, DEFAULT_ROUNDING_MODE);
}
/**
* 比较大小
* @param v1 第一个数
* @param v2 第二个数
* @return 如果v1大于v2返回1,小于返回-1,等于返回0
*/
public static int compareTo(BigDecimal v1, BigDecimal v2) {
return v1.compareTo(v2);
}
/**
* 提供默认值,避免空指针异常
* @param value 可能为null的BigDecimal对象
* @return 如果为null则返回0,否则返回原对象
*/
public static BigDecimal defaultValue(BigDecimal value) {
return value == null ? BigDecimal.ZERO : value;
}
/**
* 格式化输出,保留指定小数位
* @param bd BigDecimal对象
* @param scale 保留的小数位数
* @return 格式化后的字符串
*/
public static String format(BigDecimal bd, int scale) {
return bd.setScale(scale, DEFAULT_ROUNDING_MODE).toPlainString();
}
}
这个工具类提供了一些基本的数学运算方法,并且在进行除法运算时,默认保留了两位小数并采用
了四舍五入的策略。你可以根据实际需求调整这些默认设置。此外,还提供了一个方法来处理可能
为null的BigDecimal对象,以避免空指针异常,以及一个格式化输出的方法,用于控制输出结果的
小数位数。