개발자도구
0.1 더하기 0.2가 정확히 0.3이 아닌 이유
개발자 콘솔에 0.1 + 0.2를 입력해보면 0.3이 아니라 0.30000000000000004 같은 값이 나오는 것을 본 적이 있을 겁니다. 계산기가 고장 난 것이 아니라, 컴퓨터가 소수를 저장하는 방식 자체에서 비롯되는 근본적인 특성입니다.
컴퓨터는 모든 숫자를 결국 2진수로 저장합니다. 그런데 10진수에서는 딱 떨어지는 0.1 같은 소수가, 2진수로는 무한히 반복되는 소수가 되어버립니다. 마치 10진수로 1/3을 정확히 표현할 수 없어 0.333...으로 근사하는 것과 비슷한 상황이 0.1이라는 값에서 2진수 체계로 벌어지는 것입니다. 컴퓨터는 유한한 비트 수(보통 64비트)만 사용할 수 있기 때문에, 이 무한소수를 어느 지점에서 잘라 근사값으로 저장할 수밖에 없습니다.
이렇게 저장된 근사값끼리 덧셈이나 뺄셈을 하면, 아주 작은 오차가 누적되어 우리가 기대한 딱 떨어지는 값과 미세하게 다른 결과가 나오게 됩니다. 이는 특정 프로그래밍 언어의 버그가 아니라, IEEE 754라는 부동소수점 표준을 따르는 거의 모든 컴퓨터 시스템에서 공통적으로 나타나는 현상입니다.
실무에서 이 문제가 특히 중요해지는 곳은 금액을 다루는 로직입니다. 아주 작은 오차라도 결제나 정산 금액에서는 신뢰도 문제로 이어질 수 있기 때문에, 금융 계산에서는 실수 타입 대신 정수(최소 단위인 원이나 센트 단위로 환산)나 오차 없이 소수를 다루는 전용 자료형을 사용하는 것이 안전합니다.
단위 변환처럼 사람이 눈으로 결과를 확인하는 용도에서는, 이런 미세한 오차가 문제로 느껴지지 않도록 결과값을 적절한 소수점 자리에서 반올림해 표시하는 것이 일반적입니다. 이 사이트의 단위 변환기도 계산 결과를 보기 좋은 소수점 자리로 정리해서 보여주므로, 내부적으로 발생하는 미세한 오차를 신경 쓰지 않고 편하게 사용할 수 있습니다.
바로 직접 체험해보세요
🚀 단위 변환기 사용해보기