需求

调用工具类实现
public class BigDecimalUtils1 {
public static BigDecimal customRound(BigDecimal number,BigDecimal carryBit) {
int decimalLength = 0;
if (carryBit.compareTo(new BigDecimal(10)) >= 0) {
long longValue = carryBit.longValue();
String intLength = String.valueOf(longValue);
if (longValue == 10 || longValue == 100 || longValue == 1000 || longValue == 10000) {
decimalLength = 0 - intLength.length() + 2;
} else {
decimalLength = 0 - intLength.length() + 1;
}
} else {
decimalLength = carryBit.scale();
}
BigDecimal integerPart = number.setScale(decimalLength - 1, RoundingMode.DOWN);
BigDecimal fractionPart = number.subtract(integerPart);
if (number.compareTo(integerPart) == 0) {
return number;
}
if (fractionPart.compareTo(carryBit) >= 0) {
return number.setScale(decimalLength - 1,RoundingMode.UP).add(new BigDecimal(0));
} else {
return integerPart.add(carryBit);
}
}
public static BigDecimal customRound2(BigDecimal number,BigDecimal carryBit) {
int decimalLength = 0;
if (carryBit.compareTo(new BigDecimal(10)) >= 0) {
long longValue = carryBit.longValue();
String intLength = String.valueOf(longValue);
if (longValue == 10 || longValue == 100 || longValue == 1000 || longValue == 10000) {
decimalLength = 0 - intLength.length() + 2;
} else {
decimalLength = 0 - intLength.length() + 1;
}
} else {
decimalLength = carryBit.scale();
}
BigDecimal integerPart = number.setScale(decimalLength - 1, RoundingMode.DOWN);
BigDecimal fractionPart = number.subtract(integerPart);
if (number.compareTo(integerPart) == 0) {
return number;
}
if (fractionPart.compareTo(carryBit) >= 0) {
return number.setScale(decimalLength - 1,RoundingMode.UP).add(new BigDecimal(0));
} else {
return number.setScale(decimalLength - 1,RoundingMode.DOWN).add(new BigDecimal(0));
}
}
public static BigDecimal customRound3(BigDecimal number,BigDecimal carryBit) {
if (number.compareTo(new BigDecimal(1)) < 0) {
return new BigDecimal(1);
}
int decimalLength = 0;
if (carryBit.compareTo(new BigDecimal(10)) >= 0) {
long longValue = carryBit.longValue();
String intLength = String.valueOf(longValue);
if (longValue == 10 || longValue == 100 || longValue == 1000 || longValue == 10000) {
decimalLength = 0 - intLength.length() + 2;
} else {
decimalLength = 0 - intLength.length() + 1;
}
} else {
decimalLength = carryBit.scale();
}
BigDecimal integerPart = number.setScale(decimalLength - 1, RoundingMode.DOWN);
BigDecimal fractionPart = number.subtract(integerPart);
if (number.compareTo(integerPart) == 0) {
return number;
}
if (fractionPart.compareTo(carryBit) >= 0) {
return number.setScale(decimalLength - 1,RoundingMode.UP).add(new BigDecimal(0));
} else {
return integerPart.add(carryBit);
}
}
public static BigDecimal customRound4(BigDecimal number,BigDecimal carryBit) {
if (number.compareTo(new BigDecimal(1)) < 0) {
return new BigDecimal(1);
}
int decimalLength = 0;
if (carryBit.compareTo(new BigDecimal(10)) >= 0) {
long longValue = carryBit.longValue();
String intLength = String.valueOf(longValue);
if (longValue == 10 || longValue == 100 || longValue == 1000 || longValue == 10000) {
decimalLength = 0 - intLength.length() + 2;
} else {
decimalLength = 0 - intLength.length() + 1;
}
} else {
decimalLength = carryBit.scale();
}
BigDecimal integerPart = number.setScale(decimalLength - 1, RoundingMode.DOWN);
BigDecimal fractionPart = number.subtract(integerPart);
if (number.compareTo(integerPart) == 0) {
return number;
}
if (fractionPart.compareTo(carryBit) >= 0) {
return number.setScale(decimalLength - 1,RoundingMode.UP).add(new BigDecimal(0));
} else {
return number.setScale(decimalLength - 1,RoundingMode.DOWN).add(new BigDecimal(0));
}
}