
백엔드
택스테크 스타트업에서 부동소수점을 다루는 방법
두줄요약
세금 계산의 부동소수점 오차를 줄이기 위해 BigDecimal 사용법과 주의점을 정리했습니다. 특히 생성 방식과 나눗셈 처리에서 발생할 수 있는 실수를 중심으로 설명했습니다.
핵심 내용
- 세금 환급 계산처럼 정밀도가 중요한 도메인에서 부동소수점 오차가 법적·재무적 리스크로 이어질 수 있는 점 정리
- 자바의 BigDecimal을 활용해 정확한 금액 계산을 수행하는 방법 소개
주의할 점
- new BigDecimal(double) 사용 시 double의 근사값이 그대로 반영돼 예상과 다른 긴 소수값 생성 가능
- 나눗셈·곱셈 시 MathContext 미지정이면 무한 소수로 ArithmeticException 발생 가능
적용해볼 점
- double 값은 BigDecimal.valueOf(double), 문자열은 new BigDecimal(String)로 생성하는 방식 권장
- 금액은 가능하면 가장 작은 단위의 long으로 저장하고, 필요 시 BigDecimal과 반올림 규칙을 함께 사용
