Java의 BigDecimal 클래스 : 정밀한 숫자 계산을 위한 클래스

LeeYulhee·2023년 11월 21일
0

👉 BigDecimal 클래스


  • Java에서 정밀한 소수점 계산을 수행하기 위해 사용되는 클래스
  • float나 double과 같은 기본 타입이 제공하는 것보다 훨씬 더 높은 정밀도를 제공
  • BigDecimal은 주로 재무 계산에서 정확한 소수점 처리가 필요할 때 사용
  • 임의의 정밀도를 가진 부동 소수점 수를 표현할 수 있음
    • 이는 매우 큰 숫자나 매우 정확한 소수점 수를 다룰 때 유용



👉 사용 방법 및 예시


  • BigDecimal 객체는 문자열, double, BigInteger 등 다양한 방법으로 생성할 수 있음
    • 가장 정확한 방법은 문자열을 사용하는 것
      BigDecimal fromString = new BigDecimal("123.456");
      BigDecimal fromDouble = new BigDecimal(123.456);
      • new BigDecimal(double) 생성자는 double의 부정확성을 그대로 가져올 수 있으므로, 문자열 생성자를 사용하는 것이 더 정확한 결과를 얻을 수 있음
  • 덧셈(add), 뺄셈(subtract), 곱셈(multiply), 나눗셈(divide), 나머지(remainder) 등의 연산을 지원
    • 이러한 연산은 모두 메소드를 통해 수행되며, 결과도 BigDecimal 객체로 반환
      BigDecimal a = new BigDecimal("10.5");
      BigDecimal b = new BigDecimal("4.5");
      BigDecimal result = a.add(b); // 15.0
  • 나눗셈을 할 때는 스케일(소수점 이하 자릿수)과 반올림 모드를 지정할 수 있음
    • 이는 나눗셈의 결과가 무한 소수가 되는 경우를 처리하기 위함
      BigDecimal a = new BigDecimal("10");
      BigDecimal b = new BigDecimal("3");
      BigDecimal result = a.divide(b, 2, RoundingMode.HALF_UP); // 3.33
  • equals()와 compareTo() 메소드를 제공하여, 값의 비교를 수행
    • equals()는 값과 스케일 모두 같을 때만 true를 반환하고, compareTo()는 값만을 비교
  • BigDecimal 객체는 다른 기본 타입으로 변환될 수 있음
    • intValue(), doubleValue() 등의 메소드를 사용할 수 있음



👉 고려할 점


  • BigDecimal은 내부적으로 매우 복잡한 연산을 수행하므로, 기본 타입보다 성능이 느릴 수 있음
    • ⇒ 정밀도가 필수적이지 않은 경우에는 float나 double을 사용하는 것이 좋을 수 있음
profile
끝없이 성장하고자 하는 백엔드 개발자입니다.

0개의 댓글

관련 채용 정보