전역 BigDecimal 도구 클래스 (데이터 대비 및 가격 계산)
public class BigDecimalUtil {
/**
* 2
*/
public static final int PRICE_DECIMAL_POINT = 2;
/**
* 6
*/
public static final int SIX_PRICE_DECIMAL_POINT = 6;
/**
* 3
*/
public static final int WEIGHT_DECIMAL_POINT = 3;
/**
* : 2
*/
public static class Amount {
public static BigDecimal add(BigDecimal num1, BigDecimal num2) {
return setScale(num1.add(num2), PRICE_DECIMAL_POINT);
}
public static BigDecimal multiply(BigDecimal num1, BigDecimal num2) {
return setScale(num1.multiply(num2), PRICE_DECIMAL_POINT);
}
public static BigDecimal subtract(BigDecimal num1, BigDecimal num2) {
return setScale(num1.subtract(num2), PRICE_DECIMAL_POINT);
}
public static BigDecimal divide(BigDecimal num1, BigDecimal num2) {
return setScale(num1.divide(num2, RoundingMode.HALF_UP), PRICE_DECIMAL_POINT);
}
}
/**
* : 2
*/
public static class AmountSix {
public static BigDecimal add(BigDecimal num1, BigDecimal num2) {
return setScale(num1.add(num2), SIX_PRICE_DECIMAL_POINT);
}
public static BigDecimal multiply(BigDecimal num1, BigDecimal num2) {
return setScale(num1.multiply(num2), SIX_PRICE_DECIMAL_POINT);
}
public static BigDecimal subtract(BigDecimal num1, BigDecimal num2) {
return setScale(num1.subtract(num2), SIX_PRICE_DECIMAL_POINT);
}
public static BigDecimal divide(BigDecimal num1, BigDecimal num2) {
return num1.divide(num2, PRICE_DECIMAL_POINT, RoundingMode.HALF_UP);
}
}
/**
* : 3
*/
public static class Weight {
public static BigDecimal add(BigDecimal num1, BigDecimal num2) {
return setScale(num1.add(num2), WEIGHT_DECIMAL_POINT);
}
public static BigDecimal multiply(BigDecimal num1, BigDecimal num2) {
return setScale(num1.multiply(num2), WEIGHT_DECIMAL_POINT);
}
public static BigDecimal subtract(BigDecimal num1, BigDecimal num2) {
return setScale(num1.subtract(num2), WEIGHT_DECIMAL_POINT);
}
public static BigDecimal divide(BigDecimal num1, BigDecimal num2) {
return num1.divide(num2, WEIGHT_DECIMAL_POINT, RoundingMode.HALF_UP);
}
}
/**
* BigDecimal num1 + num2
*
*
* @param num1
* @param num2
* @param point BigDecimalUtils.PRICE_DECIMAL_POINT | BigDecimalUtils.WEIGHT_DECIMAL_POINT
* @return BigDecimal
*/
public static BigDecimal add(BigDecimal num1, BigDecimal num2, int point) {
return setScale(num1.add(num2), point);
}
/**
* BigDecimal num1 x num2
*
*
* @param num1
* @param num2
* @param point BigDecimalUtils.PRICE_DECIMAL_POINT | BigDecimalUtils.WEIGHT_DECIMAL_POINT
* @return BigDecimal
*/
public static BigDecimal multiply(BigDecimal num1, BigDecimal num2, int point) {
return setScale(num1.multiply(num2), point);
}
/**
* BigDecimal num1 - num2
*
*
* @param num1
* @param num2
* @param point BigDecimalUtils.PRICE_DECIMAL_POINT | BigDecimalUtils.WEIGHT_DECIMAL_POINT
* @return BigDecimal
*/
public static BigDecimal subtract(BigDecimal num1, BigDecimal num2, int point) {
return setScale(num1.subtract(num2), point);
}
/**
* BigDecimal num1/num2
*
*
* @param num1
* @param num2
* @param point BigDecimalUtils.PRICE_DECIMAL_POINT | BigDecimalUtils.WEIGHT_DECIMAL_POINT
* @return BigDecimal
*/
public static BigDecimal divide(BigDecimal num1, BigDecimal num2, int point) {
return num1.divide(num2, point, RoundingMode.HALF_UP);
}
/**
*
*
* @param num
* @param point
* @return BigDecimal
*/
public static BigDecimal setScale(BigDecimal num, int point) {
return num.setScale(point, RoundingMode.HALF_UP);
}
/**
* num1 num2
*
* @param num1
* @param num2
* @return boolean
*/
public static boolean isGreaterThan(BigDecimal num1, BigDecimal num2) {
return num1.compareTo(num2) == 1;
}
/**
* num1 num2
*
* @param num1
* @param num2
* @return boolean
*/
public static boolean isGreaterOrEqual(BigDecimal num1, BigDecimal num2) {
return isGreaterThan(num1, num2) || equals(num1, num2);
}
/**
* num1 num2
*
* @param num1
* @param num2
* @return boolean
*/
public static boolean isLessThan(BigDecimal num1, BigDecimal num2) {
return num1.compareTo(num2) == - 1;
}
/**
* num1 num2
*
* @param num1
* @param num2
* @return boolean
*/
public static boolean isLessOrEqual(BigDecimal num1, BigDecimal num2) {
return isLessThan(num1, num2) || equals(num1, num2);
}
/**
* num1 num2
*
* @param num1
* @param num2
* @return
*/
public static boolean equals(BigDecimal num1, BigDecimal num2) {
return num1.compareTo(num2) == 0;
}
/**
* num1 / num2
*
* @param num1
* @param num2
* @return String
*/
public static String getPercentage(BigDecimal num1, BigDecimal num2) {
BigDecimal result = num1.divide(num2, 4, RoundingMode.HALF_UP);
NumberFormat percent = NumberFormat.getPercentInstance();
percent.setMaximumFractionDigits(2);
return percent.format(result.doubleValue());
}
/**
* num1 / num2
*
* @param num1
* @param num2
* @param point
* @return String
*/
public static BigDecimal bigDecimalPercent(Integer num1, Integer num2, int point) {
if (num1 == null || num2 == null) {
return BigDecimal.ZERO;
}
if (num2.equals(Integer.valueOf(0))) {
return BigDecimal.ZERO;
}
BigDecimal bigDecimalNum1 = new BigDecimal(num1);
BigDecimal bigDecimalNum2 = new BigDecimal(num2);
return bigDecimalPercent(bigDecimalNum1, bigDecimalNum2, point);
}
/**
* num1 / num2
*
* @param num1
* @param num2
* @param point
* @return String
*/
public static BigDecimal bigDecimalPercent(BigDecimal num1, BigDecimal num2, int point) {
if (num1 == null || num2 == null) {
return BigDecimal.ZERO;
}
if (equals(BigDecimal.ZERO, num2)) {
return BigDecimal.ZERO;
}
BigDecimal percent = num1.divide(num2, point + 2, RoundingMode.HALF_UP);
BigDecimal percent100 = percent.multiply(new BigDecimal(100)).setScale(point);
return percent100;
}
/**
* num
*
* @param num
* @return String
*/
public static Boolean isEmpty(BigDecimal num) {
return null == num || equals(BigDecimal.ZERO, num);
}
/**
* num null
*
* @param num
* @return String
*/
public static Boolean isNotEmpty(BigDecimal num) {
return ! isEmpty(num);
}
/**
*
*
* @param num
* @param point
* @return
*/
public static BigDecimal convertTenThousand(BigDecimal num, int point) {
BigDecimal decimal = num.divide(new BigDecimal(10000), point, RoundingMode.HALF_UP);
return decimal;
}
/**
*
*
* @param num
* @return
*/
public static BigDecimal convertToMinusNumber(BigDecimal num) {
if (isLessOrEqual(num, BigDecimal.ZERO)) {
return num;
}
return BigDecimal.ZERO.subtract(num);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【 기 】 String 문자열 을 가 져 옵 니 다. 길이 가 홀수 이면 이 앞 에 0 을 보충 하고 마지막 에 40 위 권 을 가 져 옵 니 다.주: 짝수 판단 숫자 와 문자열 연결...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.