자바에서 기본 실수형 사용 시 부동소수점 방식으로 인해 정확한 계산이 어려움
BigDecimal을 사용하여 정밀한 십진수 계산을 가능하게 함
정산 시스템과 같이 정확한 금액 계산이 필요한 곳에서 BigDecimal 사용 권장
자바의 기본 실수형은 2진수 기반으로 숫자를 표현하며, 0.1과 같은 10진수를 정확히 표현할 수 없다. 따라서 근사값을 사용하게 되어 오차가 발생한다. 구체적으로 부호, 지수, 가수를 사용하여 실수를 표현하며, 이 과정에서 정밀도 손실이 발생한다.
BigDecimal은 내부적으로 10진수를 사용하여 정확한 계산을 보장한다. 반면, double은 속도가 빠르지만 정밀도 문제가 있다. 따라서 정산 시스템과 같이 정확한 계산이 필요한 경우 을 사용하고, 성능이 중요한 경우에는 사용을 고려해야 한다.
BigDecimal 사용 시 equals()는 소수점 자릿수까지 비교하므로 주의해야 한다. 따라서 compareTo()를 사용하여 소수점 자릿수를 무시하고 값을 비교하는 것이 좋다. 구체적으로 add(), subtract(), multiply(), divide() 등의 메서드를 활용하여 정확한 계산을 수행해야 한다.