[TIL-DAY18] Java 문법 정리 [BigDecimal]

김유란·2025년 1월 17일

1. BigDecimal

  • BigDecimal은 Java에서 제공하는 클래스 중 하나로, 정확한 부동소수점 연산과 정밀한 숫자 표현을 필요로 할 때 사용
  • double이나 float에서 발생하는 부동소수점 오차를 방지하기 위해 설계되었음
  • BigDecimal은 숫자를 10진수 기반으로 표현하며, double이나 float과 달리 이진수 기반의 부동소수점 연산으로 인한 오차가 없음
  • BigDecimal은 불변(immutable) 객체로 값을 변경하는 연산을 수행하면 항상 새로운 객체를 반환

생성 방법

BigDecimal value = new BigDecimal("123.45");  // 문자열로 생성
BigDecimal value = new BigDecimal(123.45); // 숫자로 생성 (부동소수점 오차 가능성)
BigDecimal value = BigDecimal.valueOf(123.45);  // valueOf 메서드 사용

주요 메서드

1. 사칙연산

  • add(BigDecimal augend): 덧셈
  • subtract(BigDecimal subtrahend): 뺄셈
  • multiply(BigDecimal multiplicand): 곱셈
  • divide(BigDecimal divisor, RoundingMode roundingMode): 나눗셈 (반올림 모드 필요)

2. 비교

  • compareTo(BigDecimal val): 두 값을 비교하여 -1, 0, 1 반환

3. 스케일 조정

  • setScale(int newScale, RoundingMode roundingMode): 소수점 자릿수를 조정

BigDecimal은 반올림 시 반드시 RoundingMode를 명시해야 함

  • 반올림 모드 (RoundingMode)
    • HALF_UP: 반올림 (5 이상 올림)
    • HALF_DOWN: 반올림 (5 이하 내림)
    • CEILING: 항상 올림
    • FLOOR: 항상 내림
    • UNNECESSARY: 반올림 없이 정확한 값만 허용 (오차 발생 시 예외)

4. 값 변환

  • toString(): 문자열로 변환
  • doubleValue(): double 타입으로 변환
  • intValue(): int 타입으로 변환

0개의 댓글