一、BigDecimal类
在Java中,BigDecimal类提供了对超过16位有效位的数进行精确运算的能力。它不能直接使用传统的+、-、*、/等算术运算符,而是必须调用其相应的方法来进行运算。这些方法包括
加法:使用add()方法。
减法:使用subtract()方法。
乘法:使用multiply()方法。
除法:使用divide()方法,该方法允许设置精确度和舍入模式来控制计算结果的精度和舍入规则。
二、工具类
代码如下:
package com.common.utils;
import org.apache.commons.lang3.ObjectUtils;
import java.math.BigDecimal;
/**
* BigDecimal工具类
*/
public class BigDecimalUtils {
private static final BigDecimal hundred = new BigDecimal(100);
private static final BigDecimal thousand = new BigDecimal(10000);
/**
* 转换String保留2位
*/
public static String genTransString(BigDecimal num) {
if (num == null) {
num = BigDecimal.ZERO;
} else {
num = num.setScale(2,BigDecimal.ROUND_HALF_UP);
}
return num.stripTrailingZeros().toPlainString();
}
/**
* 转换为亿元保留2位,返回String
*/
public static String genMillon(BigDecimal num) {
if (num == null) {
num = BigDecimal.ZERO;
} else {
num = num.divide(thousand,2,BigDecimal.ROUND_HALF_UP);
}
return num.stripTrailingZeros().toPlainString();
}
/**
* 相除,转换为亿元保留2位,返回String
*/
public static String genMillonTwo(BigDecimal num1, BigDecimal num2) {
if (num1 == null) {
num1 = BigDecimal.ZERO;
}
if (num2 == null) {
num2 = BigDecimal.ZERO;
}
if (compare(num2)) {
return BigDecimal