AI Briefing

부동소수점 이야기

·2023.10.20 23:00

핵심 내용

정밀한 금액 계산이 필요한 정산 시스템에서는 부동소수점 오차를 방지하기 위해 BigDecimal을 사용해야 한다.

자세히 보기

Java의 double과 같은 기본 실수형 자료형은 10진수를 2진수로 변환하는 과정에서 무한 소수를 완벽히 표현하지 못해 부동소수점(Floating point) 오차가 발생한다. 예를 들어 0.1 + 0.2의 결과가 0.3이 아닌 0.30000000000000004로 계산되는 식이다.

이러한 오차는 정밀한 계산이 필수적인 정산 시스템에서 1원 이상의 금액 차이를 발생시킬 수 있어 매우 위험하다. 따라서 이를 해결하기 위해 BigDecimal을 사용한다.

BigDecimal의 주요 특징은 다음과 같다.

  • 내부적으로 10진수로 숫자를 저장하여 0.1과 같은 값을 정확히 표현함
  • 필요한 만큼 자릿수를 늘려 무한 소수 정밀도를 가짐
  • 문자열로 초기화하여 부동소수점 한계를 우회함
  • 단, 기본 자료형보다 연산 속도가 느리며, 비교 연산 시 equals() 대신 compareTo()를 사용하는 등 주의가 필요함

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.