공학용 계산기, 더 깊이 이해하기: 연산 순서·각도 모드·오차의 원리
공학용 계산기는 버튼이 많은 사칙연산 계산기가 아니다. 같은 식을 넣어도 계산기 종류에 따라 답이 달라지고, 각도 모드 설정 하나로 정답이 오답이 되며, 컴퓨터 내부의 소수 표현 방식 때문에 0.1 + 0.2가 0.3이 아닌 값으로 계산되기도 한다. 이 글은 계산기를 '누르는 법'이 아니라 계산기가 답을 만들어내는 원리를 다룬다. 원리를 알면 결과를 검산할 수 있고, 이상한 값이 나왔을 때 원인을 바로 짚을 수 있다.
같은 식, 다른 답 — 2 + 3 × 4가 14도 되고 20도 되는 이유
계산기는 크게 두 방식으로 나뉜다. 수식형(expression 방식)은 식 전체를 입력받은 뒤 수학의 연산 우선순위(괄호 → 거듭제곱 → 곱셈·나눗셈 → 덧셈·뺄셈)를 적용해 한 번에 계산한다. 반면 즉시실행형(immediate execution)은 버튼을 누르는 순서대로 그때그때 계산을 확정한다. 사무용 전자계산기나 Windows 기본 계산기의 '표준' 모드가 대표적이다. 그래서 2 + 3 × 4를 입력하면 수식형은 3×4를 먼저 계산해 14를, 즉시실행형은 2+3=5를 먼저 확정한 뒤 4를 곱해 20을 내놓는다. 이 계산기는 수식 전체를 보고 계산하는 수식형이다.
| 계산기 유형 | 처리 방식 | 2 + 3 × 4 결과 |
|---|---|---|
| 수식형 (공학용 계산기, 이 계산기) | 우선순위에 따라 3×4를 먼저 계산 | 14 (수학적으로 올바른 값) |
| 즉시실행형 (사무용 전자계산기 등) | 입력 순서대로 2+3=5를 먼저 확정 | 20 |
수식형이라고 함정이 없는 것은 아니다. 대표적인 것이 단항 마이너스와 거듭제곱의 순서다. 이 계산기에서는 -3² 은 -9다. 거듭제곱이 단항 마이너스보다 먼저 적용되어 -(3²)로 해석되기 때문이다. 반면 엑셀에 =-3^2를 입력하면 9가 나온다(엑셀은 부호를 먼저 붙인다). 또 6÷2(1+2)처럼 곱셈 기호를 생략한 식은 계산기와 프로그램마다 해석이 갈리는 대표적인 모호한 식으로, 1이 나오는 기기도 있고 9가 나오는 기기도 있다. 의도한 묶음은 괄호와 곱셈 기호로 명시하자. (-3)², 6÷(2×(1+2))처럼 쓰면 모호함을 크게 줄일 수 있으며, 중요한 계산은 사용하는 프로그램의 입력 문법도 확인해야 한다.
DEG/RAD 모드 — 삼각함수 계산 전에 확인할 설정
똑같이 sin(30)을 입력해도 DEG 모드에서는 0.5, RAD 모드에서는 약 -0.988이 나온다. 앞은 '30도', 뒤는 '30라디안(약 1719°)'의 사인값이라 전혀 다른 계산이기 때문이다. 삼각함수 결과가 예상과 다르면 입력 단위와 이 모드부터 확인하자. 원칙은 간단하다. 기하·측량·건축처럼 문제가 도(°) 단위로 주어지면 DEG, 미적분·물리 공식(각속도, 단진자 주기, 파동 방정식 등)은 라디안을 전제로 유도된 식이므로 RAD로 계산해야 한다.
- 계산을 시작하기 전에 화면의 DEG/RAD 표시부터 확인하는 습관을 들인다.
- 익숙한 기준값으로 모드를 검증한다. sin(30) = 0.5, tan(45) = 1이 나오면 DEG 모드가 맞다.
- 도→라디안 변환은 ×π/180이다. 예: 30° = 30×π/180 ≈ 0.5236 rad이고, RAD 모드에서 sin(30×π/180)을 계산하면 DEG 모드의 sin(30)과 똑같이 0.5가 나온다.
- 역삼각함수의 출력 단위도 모드를 따른다. sin⁻¹(0.5)가 30이면 DEG, 약 0.5236이면 RAD 모드다.
0.1 + 0.2는 왜 0.3이 아닌가 — 부동소수점 오차와 이 계산기의 처리
소프트웨어 계산기 대부분은 수를 IEEE 754 64비트 부동소수점, 즉 이진법(2진수)으로 저장한다. 문제는 십진법에서 아주 간단한 0.1이 이진법으로는 0.0001100110011…처럼 무한 반복 소수라는 점이다. 유한 정밀도에서는 이를 지정된 반올림 방식으로 가장 가까운 표현 가능 값에 저장하므로 미세한 표현 오차가 생길 수 있고, JavaScript의 원시 연산에서는 0.1 + 0.2 = 0.30000000000000004가 된다. 버그가 아니라 유한 이진 부동소수점 표현의 한계다.
이 계산기는 수학 라이브러리 math.js로 수식을 계산한 뒤 결과를 유효숫자 14자리로 반올림해 표시한다. 이 표시 방식은 0.1 + 0.2 같은 일부 표현 노이즈를 숨겨 0.3으로 보이게 하지만, 오차가 언제나 15번째 자리 부근에만 생기거나 결과의 정확도를 보장한다는 뜻은 아니다. 오차의 크기와 위치는 값의 규모, 연산 순서, 반복 횟수와 문제의 수치적 조건에 따라 달라질 수 있다. 금액·세금처럼 정확한 원 단위와 법정 절사 순서가 중요한 계산은 이 일반 계산기의 표시 반올림에 의존하지 말고 정수 또는 십진 연산과 해당 규정의 단계별 반올림을 사용해야 한다.
E 표기법과 유효숫자 — 아주 큰 수, 아주 작은 수 다루기
3E8은 3×10⁸(3억)을 뜻하는 과학적 표기법(E notation)이다. 빛의 속도 3×10⁸ m/s, 아보가드로 수 6.022×10²³처럼 자릿수가 큰 상수는 0을 일일이 세는 대신 EXP 버튼으로 3 EXP 8처럼 입력하는 것이 빠르고 실수도 적다. 이 계산기는 결과의 절댓값이 10¹⁵ 이상이거나 10⁻¹⁵보다 작아지면 자동으로 e 표기로 전환한다. 예를 들어 2^60의 결과는 1.1529215046068e+18로 표시된다.
유효숫자도 함께 이해해 두면 좋다. 계산기가 14자리를 보여준다고 그 14자리가 전부 의미 있는 것은 아니다. 측정값이 들어간 계산의 정밀도는 가장 정밀도가 낮은 입력에 묶인다. 줄자로 잰 2.5m(유효숫자 2자리)에 π를 곱해 7.853981…을 얻어도 보고할 값은 7.9m 정도가 적절하다. 원칙은 '계산은 전체 자릿수로, 반올림은 보고 시점에 한 번만'이다.
로그와 삼각함수, 실무에서는 이렇게 쓴다
데시벨(dB)은 로그 척도다. 전력비의 데시벨 값은 10×log(P₂/P₁)로 계산하므로 전력이 2배면 10×log(2) ≈ 3.01dB, 10배면 +10dB다. 서로 상관없는 동일 레벨 소음원 두 개의 에너지를 합산할 때도 약 +3dB로 계산한다. 다만 위상이 연관된 동일 순음 등은 보강·상쇄에 따라 결과가 달라질 수 있으므로 모든 '같은 소음원 두 대'에 이 값을 그대로 적용하면 안 된다.
경사도는 역탄젠트의 영역이다. 도로 표지판의 '경사 10%'는 각도가 아니라 수평 100m당 수직 10m, 즉 tan값이 0.1이라는 뜻이다. 각도로 바꾸려면 tan⁻¹(0.1) ≈ 5.71°를 계산하면 된다. 반대로 지붕 물매나 경사로 설계처럼 각도가 주어지면 tan(각도)×수평거리로 높이를 구한다. 자연로그 ln은 '몇 번 곱해야 하는가'라는 질문에 답한다. 연 5% 복리로 원금이 2배가 되는 기간은 ln(2)÷ln(1.05) ≈ 14.2년인데, 유명한 '72의 법칙'(72÷수익률)은 바로 이 로그 계산의 근사식으로 72÷5 = 14.4년과 거의 일치한다.
함께 보면 좋은 도구
- 할인율 계산기 — 퍼센트 증감·할인가 계산을 수식 입력 없이 바로 확인
- 이자 계산기 — 위의 복리·72의 법칙 계산을 단리/복리 옵션으로 검증
- 주식 수익률 계산기 — 입력한 매매 수수료와 증권거래세를 반영한 예상 손익 계산