%퍼센트랩

반올림·절사·올림과 0.1 + 0.2 문제 — 계산기 끝수 처리의 모든 것

반올림·절사(버림)·올림의 차이, 원 단위 끝수 처리, 은행가 반올림, 컴퓨터에서 0.1 + 0.2가 0.30000000000000004가 되는 이유와 이 계산기의 처리 방식을 설명합니다.

계산기에서 바로 해 보기 →

퍼센트 계산은 나눗셈과 소수 곱셈이 많아 끝자리가 딱 떨어지지 않는 경우가 대부분입니다. 같은 계산이라도 끝수를 어떻게 처리하느냐에 따라 몇 원, 몇 센트가 달라지므로 규칙을 알아 두면 영수증과 견적서의 차이를 설명할 수 있습니다.

세 가지 끝수 처리

단위를 바꿀 수도 있습니다. 12,345원을 10원 단위로 절사하면 12,340원, 100원 단위로 반올림하면 12,300원입니다.

어디에 무엇을 쓰나

음수의 끝수

−2.5를 반올림하면 −3일까요, −2일까요? 이 계산기는 0에서 먼 쪽으로 반올림해 −3으로 처리합니다. 절사는 0 방향(−1.239 → −1.23), 올림은 0에서 먼 방향입니다. 금액의 부호와 상관없이 크기(절댓값)에 같은 규칙을 적용하는 방식입니다.

은행가 반올림

정확히 절반(…5)일 때 짝수 쪽으로 보내는 방식입니다(2.5 → 2, 3.5 → 4). 반올림을 아주 많이 반복할 때 한쪽으로 치우치는 오차를 줄이려고 일부 회계·프로그래밍 환경에서 씁니다. 일상 계산과 이 계산기는 일반 반올림을 씁니다.

컴퓨터에서 0.1 + 0.2는 왜 0.30000000000000004일까

컴퓨터는 숫자를 2진수로 저장합니다. 10진수의 1/3이 0.333…으로 끝나지 않듯, 0.1은 2진수로 끝없이 이어지는 소수라서 정확히 저장되지 않고 아주 가까운 값으로 반올림돼 저장됩니다. 그래서 자바스크립트를 포함한 대부분의 언어에서 0.1 + 0.2를 계산하면 0.30000000000000004가 나옵니다.

같은 이유로 1.005를 소수 둘째 자리에서 반올림하는 흔한 방법(toFixed(2))은 1.01이 아닌 1.00을 돌려줍니다. 1.005가 실제로는 1.00499999…로 저장돼 있기 때문입니다.

이 계산기의 처리 방식

표시 자릿수와 실제 값

화면 위쪽 소수 자리 설정은 결과를 보여 주는 자릿수만 바꿉니다. 1 ÷ 3 × 100은 내부적으로 33.3333333333이고, 소수 2자리로 두면 33.33으로 보입니다. 복사 버튼은 화면에 표시된 값을 복사합니다.

정리

끝수 처리 규칙이 다르면 결과가 몇 원 달라지는 것은 오류가 아니라 규칙의 차이입니다. 금액이 맞지 않을 때는 ① 어느 단계에서 끝수를 처리했는지 ② 단위와 방식이 무엇인지부터 확인하세요.

계산기에서 바로 해 보기 →