BigDecimal

  • 정확한 숫자 계산을 위한 클래스

  • java.math 패키지에 포함되어있음 (import 필요)

  • 선언 방식

    • BigDecimal (이름) = new BigDecimal(“double형식 String”);

주의) 선언시 Double이 아니라 String을 넣어야 함

// import 필요
import java.math.BigDecimal;

// 선언 및 초기화
BigDecimal db1 = new BigDecimal("1.0");



BigDecimal 사칙연산(+-*/)

  • BigDecimal Type끼리만 가능
BigDecimal number1 = new BigDecimal("1.0");
BigDecimal number2 = new BigDecimal("2.0");
    • = add
number1.add(number2);
    • = subtract
number1.substract(number2);
    • = multiply
number1.multiply(number2);
  • / = divide
/* BigDecimal.ROUND_UP : 올림
 * BigDecimal.ROUND_DOWN : 내림
 * BigDecimal.ROUND_HALF_UP : 반올림(5<=x<9 ↑)
 * BigDecimal.ROUND_HALF_DOWN : 반내림(5<x<9 ↑, 5가 포함되지 않음)
 */
/* 기준값.divide("나눌값", 올림내림표현) → num = 1과 같음
 * 기준값.divide("나눌값, num, 올림내림표현) → 소숫점 num째 자리까지 남겨둠(num+1째 자리에 적용)
 * 0일 경우 → 1의자리, 1이상일경우 → 지수부/가수부 표현(예 1E+1)
 */
number1.divide(number2, BigDecimal.ROUND_UP);
number1.divide(number2, 2, BigDecimal.ROUND_HALF_UP);



비교(VS)

  • 비교 연산자로 비교가 불가능함(==, >=, >, <=, <, !=)

  • compareTo 함수 이용

  • BigDecimal Type끼리만 가능

  • 응답값 (a.compareTo(b))

    • -1 : 첫 값이 둘째 값보다 작음 (a < b)

    • 0 : 첫 값이 둘째 값과 같음 (a = b)

    • 1 : 첫 값이 둘째 값보다 큼 (a > b)

BigDecimal number1 = new BigDecimal("1.0");
BigDecimal number2 = new BigDecimal("2.0");

number1.compareTo(number2);



반올림/올림/내림/반내림

  • 특정 자리수에서 반올림/올림/내림/반내림 작업

  • 올림내림 표현

    • BigDecimal.ROUND_UP : 올림

    • BigDecimal.ROUND_DOWN : 내림

    • BigDecimal.ROUND_HALF_UP : 반올림(5<=x<9 ↑)

    • BigDecimal.ROUND_HALF_DOWN : 반내림(5<x<9 ↑, 5가 포함되지 않음)

  • setScale 함수 이용

    • 기준값.setScale(올림내림표현) → num = 1과 같음

    • 기준값.setScale(num, 올림내림표현) → 소숫점 num째 자리까지 남겨둠(num+1째 자리에 적용)

    • 0일 경우 → 1의자리, 1이상일경우 → 지수부/가수부 표현(예 1E+1)

BigDecimal number1 = new BigDecimal("1.0");

number1.setScale(BigDecimal.ROUND_UP);
number1.setScale(1, BigDecimal.ROUND_HALF_UP);