같은 식을 넣어도 계산기마다 결과가 다를 때가 있다. 대부분은 연산 우선순위를 어떻게 정했는지의 차이다. 이 글에서는 SciKey가 따르는 우선순위 전체를 정리하고, 자주 논란이 되는 세 가지 식 -2^2, 2^3^2, 6÷2(1+2) 를 자세히 살펴본다.
1. SciKey의 우선순위 (높은 순)
| 순위 | 연산 | 결합 방향 | 예 |
|---|---|---|---|
| 1 | 괄호, 함수 호출 | (1+2), sin(30) | |
| 2 | 후위 연산자 ! % ° | 왼쪽→오른쪽 | 5! = 120, 50% = 0.5 |
| 3 | 거듭제곱 ^ | 오른쪽→왼쪽 | 2^3^2 = 512 |
| 4 | 단항 부호 - + | -2^2 = −4 | |
| 5 | 곱셈 ×, 나눗셈 ÷, mod, 암시적 곱셈 | 왼쪽→오른쪽 | 6÷2(1+2) = 9 |
| 6 | 덧셈 +, 뺄셈 − | 왼쪽→오른쪽 | 10−4−3 = 3 |
같은 순위끼리는 결합 방향대로 계산한다. 8÷2÷2 는 (8÷2)÷2 = 2이고, 10−4−3 은 (10−4)−3 = 3이다.
2. -2^2 는 왜 −4인가
수학 교과서에서 −2²은 −(2²) = −4로 읽는다. 거듭제곱이 먼저이고 마이너스는 그 결과에 붙는다. x = 2일 때 −x² = −4인 것과 같은 규칙이다. SciKey도 단항 부호를 거듭제곱보다 낮게 두어 -2^2 = −4를 돌려준다. (−2)²을 원한다면 (-2)^2 = 4로 괄호를 쓴다.
지수 쪽의 부호는 허용된다. 2^-3 은 2⁻³ = 0.125다.
엑셀은 다르다
마이크로소프트 엑셀에서 =-2^2 를 입력하면 4가 나온다. 마이크로소프트의 공식 문서 "Calculation operators and precedence in Excel"의 우선순위 표에서 부정(negation, −1의 마이너스)이 백분율(%)과 거듭제곱(^)보다 위에 있기 때문이다. 즉 엑셀은 (−2)²으로 계산한다. 같은 식을 엑셀과 계산기에서 비교하다가 결과가 다르면 이 차이를 의심하자. 엑셀에서도 =-(2^2) 처럼 괄호를 쓰면 −4가 나온다.
프로그래밍 언어도 제각각이다. 파이썬의 -2**2 는 −4(수학 관례와 같음)이고, 자바스크립트는 -2**2 를 모호하다고 보고 문법 오류로 거부한다. 괄호를 써야만 받아 준다.
3. 거듭제곱은 오른쪽부터: 2^3^2 = 512
2^3^2는 수학에서 2^(3²) = 2⁹ = 512로 읽는다. 지수 위의 지수를 먼저 계산하는 것이 표기상 자연스럽기 때문이다. SciKey도 거듭제곱을 오른쪽 결합으로 처리해 2^3^2 = 512다. (2³)² = 64를 원하면 (2^3)^2 로 쓴다.
엑셀은 같은 우선순위의 연산자를 왼쪽부터 계산한다고 문서에 적혀 있고, 거듭제곱도 예외가 아니어서 =2^3^2 가 64가 된다. 이 역시 괄호로 의도를 밝히면 어디서나 같은 답이 나온다.
4. 6÷2(1+2) 논란
인터넷에서 자주 돌아다니는 문제다. 답이 9라는 쪽과 1이라는 쪽이 갈린다.
- 9라고 보는 해석: 괄호 앞 곱셈 기호 생략은 보통 곱셈과 같다. 6÷2×3 = (6÷2)×3 = 9.
- 1이라고 보는 해석: 2(1+2)는 한 덩어리(2a처럼)이므로 먼저 계산한다. 6÷(2×3) = 1.
수학적으로 어느 한쪽이 "틀렸다"기보다 표기가 모호하다가 정확한 결론이다. 전문 문헌에서는 이런 식을 쓰지 않고 분수선이나 괄호로 의도를 분명히 한다.
SciKey의 선택
SciKey는 암시적 곱셈을 보통 곱셈·나눗셈과 같은 우선순위로 두고 왼쪽부터 계산한다. 그래서
6÷2(1+2)= 91/2π= (1/2)×π = 1.57079632679 (π/2로 함께 표시)- 1/(2π)를 원하면
1/(2π)= 0.159154943092
이 방식을 고른 이유는 규칙이 하나라서 예측하기 쉽기 때문이다. "곱셈·나눗셈은 적힌 순서대로"라는 규칙만 기억하면 기호를 생략했는지와 무관하게 같은 결과가 나온다.
다른 계산기는?
계산기 제조사와 기종에 따라 괄호 앞 생략 곱셈을 일반 곱셈·나눗셈보다 먼저 계산하도록 설계한 것도 있어, 같은 식에서 1이 나올 수 있다. 기종에 따라 다를 수 있으므로 시험장에서 쓰는 계산기가 어떤 규칙인지 설명서로 확인해 두는 것이 좋다. 가장 확실한 방법은 모호한 식을 아예 입력하지 않는 것이다.
5. 후위 연산자와 %
!, %, ° 는 바로 앞의 값에만 붙는다.
3!2= 3! × 2 = 12 (암시적 곱셈)2×3!= 12,(2×3)!= 720200×15%= 200 × 0.15 = 30100+10%= 100 + 0.1 = 100.1
마지막 예에 주의하자. 일부 탁상 계산기는 100 + 10 % 를 "100에 10%를 더한다"(= 110)로 처리하지만, SciKey의 % 는 단순히 100으로 나누는 연산이다. 10% 가산을 원하면 100×(1+10%) = 110으로 쓴다.
6. mod의 우선순위와 부호
mod 는 곱셈과 같은 순위다. 2+7 mod 3 은 2 + (7 mod 3) = 3이다. 결과의 부호는 나누는 수를 따른다: -7 mod 3 = 2, 7 mod -3 = −2. 단, -7 mod 3 의 단항 마이너스는 mod보다 먼저 7에 붙는다(단항 부호가 곱셈류보다 높은 순위).
7. 함수와 거듭제곱, 상수와 거듭제곱
함수 호출은 가장 높은 순위다. 그래서 sin(30)^2 는 (sin 30°)² = 0.25이고, 수학책의 sin²30°와 같다(DEG). 30²의 사인을 원하면 sin(30^2) 로 괄호 안에 넣는다. SciKey는 함수에 괄호를 강제하므로 sin 30^2 같은 모호한 입력은 처음부터 받지 않는다.
상수 뒤의 거듭제곱은 암시적 곱셈보다 먼저다. 2π^2 는 2×(π²) = 19.7392088022이지 (2π)² = 39.4784176044가 아니다. 반지름 r인 구의 겉넓이 4πr²을 4πx^2 로 입력하면 의도대로 계산되는 것도 이 규칙 덕분이다.
8. 괄호로 모호함 없애기
규칙을 외우는 것보다 확실한 방법은 괄호를 넉넉히 쓰는 것이다.
| 의도 | 모호한 입력 | 분명한 입력 |
|---|---|---|
| a/(bc) | a/bc | a/(b×c) |
| (−x)² | -x^2 | (-x)^2 |
| e^(−t/RC) | e^-t/RC | e^(-t/(R×C)) |
| (a+b)/2 | a+b/2 | (a+b)/2 |
표의 a, b, t, R, C는 설명용 기호다. SciKey에서는 숫자나 x·y·z 변수로 바꿔 입력한다(특히 R 은 기체상수라는 이름이 이미 있다). 세 번째 줄의 e^-t/RC 는 (e^−t)/RC로 계산된다. 지수에 식이 들어가면 반드시 괄호로 감싸자. 괄호를 더 써서 결과가 틀리는 일은 없지만, 괄호를 덜 써서 틀리는 일은 자주 생긴다.
9. 요약
- 거듭제곱은 단항 마이너스보다 먼저:
-2^2= −4 (엑셀은 4) - 거듭제곱은 오른쪽부터:
2^3^2= 512 - 곱셈·나눗셈·암시적 곱셈은 같은 순위, 왼쪽부터:
6÷2(1+2)= 9 %는 100으로 나누기:100+10%= 100.1- 헷갈리면 괄호