BigDecimal
BigDecimal은 java.math 패키지의 일부인 Java 클래스입니다. 이는 임의 정밀도 산술에 사용됩니다. 즉, 많은 자릿수가 포함된 숫자를 처리할 수 있으므로 재무 계산과 같이 정밀도가 중요한 응용 프로그램에 적합합니다. double 또는 float과 같은 기본 데이터 유형과 달리 BigDecimal은 정확한 소수 표현을 제공합니다.
다음은 BigDecimal에 대한 몇 가지 주요 기능과 세부정보입니다.
임의의 정밀도
BigDecimal을 사용하면 소수점 이하 자릿수가 사실상 무제한인 숫자로 작업할 수 있으므로 정밀도가 중요한 상황에 이상적입니다.
불변(Immutable)
BigDecimal 객체는 불변입니다. 즉, 일단 생성되면 해당 값을 변경할 수 없습니다. BigDecimal 개체에 작업을 수행하면 작업 결과와 함께 새로운 BigDecimal 개체가 반환됩니다.
반올림 제어
BigDecimal 객체에 대한 산술 연산을 수행할 때 반올림 모드와 정밀도를 제어할 수 있습니다. 이는 재무 계산의 정확성을 유지하는 데 중요합니다.
비교(Comparison)
BigDecimal은 두 개의 BigDecimal 개체를 비교할 수 있는 compareTo와 같은 값을 비교하는 메서드를 제공합니다.
문자열 생성자
부동 소수점 표현의 한계로 인한 정밀도 손실을 방지하기 위해 숫자의 문자열 표현에서 ‘BigDecimal’ 객체를 생성할 수 있습니다.
다음은 Java에서 BigDecimal을 사용하는 방법에 대한 예입니다.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class BigDecimalExample {
public static void main(String[] args) {
// Create BigDecimal objects
BigDecimal num1 = new BigDecimal("10.25");
BigDecimal num2 = new BigDecimal("3.75");
// Basic arithmetic operations
BigDecimal sum = num1.add(num2); // Addition
BigDecimal difference = num1.subtract(num2); // Subtraction
BigDecimal product = num1.multiply(num2); // Multiplication
BigDecimal quotient = num1.divide(num2, 2, RoundingMode.HALF_UP); // Division with 2 decimal places rounding
// Comparison
int comparisonResult = num1.compareTo(num2);
if (comparisonResult > 0) {
System.out.println(num1 + " is greater than " + num2);
} else if (comparisonResult < 0) {
System.out.println(num1 + " is less than " + num2);
} else {
System.out.println(num1 + " is equal to " + num2);
}
// Display results
System.out.println("Sum: " + sum);
System.out.println("Difference: " + difference);
System.out.println("Product: " + product);
System.out.println("Quotient: " + quotient);
}
}
이 예에서는 두 개의 ‘BigDecimal’ 개체인 ‘num1’과 ‘num2’를 만들고 이에 대해 다양한 산술 연산을 수행합니다. 또한 compareTo 메소드를 사용하여 BigDecimal 객체를 비교하고 나누는 동안 정밀도와 반올림 모드를 제어하는 방법을 보여줍니다.
BigDecimal로 작업할 때는 임의 정밀도 특성으로 인해 잠재적인 성능 영향을 염두에 두어야 합니다. 대부분의 일상적인 계산에는 ‘double’ 또는 ‘float’과 같은 기본 데이터 유형이 충분하고 더 효율적입니다. 하지만 재무 계산이나 정확하게 보존해야 하는 사용자 입력을 처리하는 등 정확한 소수 연산이 필요한 상황에는 ‘BigDecimal’이 필수적입니다.