[Java] BigDecimal

김민범·2024년 11월 28일
0

Java

목록 보기
8/8

Java BigDecimal 사용법 및 예제

BigDecimal은 Java에서 고정 소수점이나 임의 정밀도의 숫자 계산을 처리하기 위해 사용되는 클래스이다. 주로 금액 계산처럼 정확한 소수점 연산이 필요한 경우 사용한다.


BigDecimal 생성 방법

  1. 문자열 사용
    BigDecimalString으로 초기화하는 것이 가장 안전하다.

    BigDecimal bd = new BigDecimal("123.45");
  2. 숫자 타입 사용
    실수 타입(double, float)을 사용하면 부동소수점 오류가 발생할 수 있다.

    BigDecimal bd = BigDecimal.valueOf(123.45); // 권장

주요 메서드

  1. 덧셈 (add)

    BigDecimal result = bd1.add(bd2);
  2. 뺄셈 (subtract)

    BigDecimal result = bd1.subtract(bd2);
  3. 곱셈 (multiply)

    BigDecimal result = bd1.multiply(bd2);
  4. 나눗셈 (divide)
    나눗셈 시 RoundingMode를 반드시 설정해야 한다.

    BigDecimal result = bd1.divide(bd2, RoundingMode.HALF_EVEN);
  5. 스케일 설정 (setScale)
    소수점 자릿수를 조정한다.

    BigDecimal result = bd.setScale(2, RoundingMode.HALF_UP);
  6. 비교 (compareTo)

    int comparison = bd1.compareTo(bd2); // -1, 0, 1 반환

예제

import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalExample {
    public static void main(String[] args) {
        BigDecimal bd1 = new BigDecimal("100.25");
        BigDecimal bd2 = new BigDecimal("50.15");

        // 덧셈
        BigDecimal sum = bd1.add(bd2);

        // 나눗셈
        BigDecimal division = bd1.divide(bd2, 2, RoundingMode.HALF_UP);

        // 스케일 조정
        BigDecimal scaled = bd1.setScale(1, RoundingMode.DOWN);

        // 결과 출력
        System.out.println("덧셈 결과: " + sum);
        System.out.println("나눗셈 결과: " + division);
        System.out.println("스케일 조정 결과: " + scaled);
    }
}

BigDecimal 사용 추천 상황

  • 금액, 통화 계산
  • 정확한 소수점 연산이 필요한 경우
  • 부동소수점 연산의 오차가 허용되지 않는 상황

주의 사항

  • BigDecimal은 불변 객체이므로, 연산 결과는 항상 새로운 객체로 반환된다.
  • new BigDecimal(double) 대신 BigDecimal.valueOf(double) 사용을 권장한다.

0개의 댓글