Java에서 double이나 float은 부동소수점 오차가 존재하기 때문에 정확한 소수 계산이 필요한 경우에는 BigDecimal을 사용하는 것이 일반적입니다. 특히 금액 계산, 세금 계산, 금융 시스템에서는 정밀도가 중요한데, 이럴 때 BigDecimal이 유용하게 사용됩니다.
2. BigDecimal 비교는 왜 equals()가 아닌 compareTo()?
equals()는 값의 크기뿐만 아니라 소수점 자리수까지 정확히 일치해야 동일하다고 판단합니다. 예를 들어:
new BigDecimal("10.0").equals(new BigDecimal("10.00")) // falsenew BigDecimal("10.0").compareTo(new BigDecimal("10.00")) // 0