BigDecimal

BigDecimal (임의 정밀도 십진수)

불변(immutable)이며 임의 정밀도(arbitrary-precision)를 갖는 부호 있는 십진수를 다루는 클래스입니다. Number를 상속하며 Comparable<BigDecimal>를 구현합니다.

출처: Java API Reference

본문

BigDecimal은 임의 정밀도 정수인 unscaled value와 32비트 정수인 scale로 구성됩니다. scale이 0 또는 양수이면 소수점 오른쪽의 자릿수를 의미하고, 음수이면 unscaled value에 10의 제곱을 곱합니다.

따라서 값은 unscaledValue × 10^(-scale)로 표현됩니다. 이 클래스는 산술 연산, scale 조작, 반올림, 비교, 해싱, 형식 변환 등의 연산을 제공하며, toString() 메서드로 표준 표현을 얻을 수 있습니다.

반올림 동작을 완전히 제어할 수 있어 금융 등 정밀한 계산이 필요한 곳에서 널리 사용됩니다. 반올림 모드를 지정하지 않으면 예외를 던지는 엄격한 모드가 기본입니다.

생성자로는 new BigDecimal(String), new BigDecimal(int), new BigDecimal(double) 등이 있으며, 문자열 기반 생성자가 정확한 표현을 보장합니다.

주요 연산 메서드로 add(BigDecimal), subtract(BigDecimal), multiply(BigDecimal), divide(BigDecimal, RoundingMode) 등이 있습니다.

setScale(int, RoundingMode)compareTo(BigDecimal)은 자릿수 조정과 비교에 사용됩니다. equals()는 스케일까지 고려하므로 값 비교는 compareTo()를 권장합니다.

더 알아보기 (Learn more)

Java 공식 API