공학용 계산기: 거듭제곱, 근호, 로그 및 삼각함수
거듭제곱, 근호, 로그와 ln, 도 또는 라디안 단위의 사인·코사인·탄젠트, 팩토리얼, 백분율 및 메모리 기능을 제공하는 온라인 공학용 계산기입니다.
Scientific Calculator
Evaluates a typed or tapped expression with the usual order of operations, including powers, roots, logarithms, trigonometry and factorials.
Keypad
How this calculator reads an expression
History
No calculations yet. Press = to add one.
문서화
공학용 계산기
공학용 계산기는 입력된 수학식의 값을 계산합니다. 이 계산기는 거듭제곱, 제곱근, 로그, 삼각 함수, 팩토리얼 및 백분율을 인식하고, 표준 연산 순서를 적용하여 하나의 답을 표시합니다.
계산기의 기능
수식은 수식 입력란에 입력하거나 키패드로 만들 수 있습니다. 계산기는 수식이 바뀌는 즉시 이를 읽으므로 답을 보기에 등호 키가 필요하지 않습니다. 대신 = 키를 누르면 계산이 기록 목록에 추가됩니다.
다음을 입력할 수 있습니다.
- 숫자, 소수점 및
1.5e-3과 같은 지수 형식의 수 - 연산자
+,-,*,/,^(거듭제곱) 및 괄호 - 상수
pi및e - 함수
sin,cos,tan,asin,acos,atan,log,ln,sqrt및cbrt - 후위 기호
!(팩토리얼) 및%(백분율)
키패드 기호는 일반적인 표기법으로 변환되므로 ×, ÷, −, π는 각각 *, /, -, pi와 같은 의미입니다.
log는 밑이 10인 로그이고, ln은 밑이 e인 자연로그입니다. 이는 TI 및 Casio 공학용 계산기에서 사용하는 표기이며, NIST 수학 함수 디지털 라이브러리의 4.2절에서도 같은 명칭을 사용합니다.
연산 순서
수식의 의미를 결정하는 규칙이 연산 순서입니다. 이 계산기는 아래의 문법을 사용합니다. 각 줄은 그 아래 줄을 호출하므로, 중첩 구조가 우선순위표가 됩니다. 마지막 줄의 결합력이 가장 강하며 가장 먼저 계산됩니다.
1expression := term (('+' | '-') term)*
2term := unary (('*' | '/' | juxtaposition) unary)*
3unary := ('-' | '+') unary | power
4power := postfix ('^' unary)?
5postfix := primary ('!' | '%')*
6primary := number | constant | name '(' expression ')' | '(' expression ')'
7먼저 계산되는 것부터 나중에 계산되는 것까지 목록으로 쓰면 다음과 같습니다.
- 괄호 안의 모든 내용 및 괄호에 적용된 함수
!및%^- 앞에 붙은
-또는+부호 *,/및 나란히 쓰인 두 항+및-
이 규칙에 따른 결과는 ISO 80000-2:2019 및 Wikipedia의 "연산 순서" 문서와 일치합니다.
| 표기 | 다음과 같이 읽음 | 값 |
|---|---|---|
2^3^2 | 2^(3^2) | 512 |
-2^2 | -(2^2) | -4 |
2^-2 | 2^(-2) | 0.25 |
2^3! | 2^(3!) | 64 |
100+10% | 100 + (10/100) | 100.1 |
1/2pi | (1/2) * pi | 1.57079632679 |
6/2(1+2) | (6/2) * (1+2) | 9 |
나란히 쓰인 두 수 또는 이름은 곱해집니다. 따라서 2pi, 2(3+4) 및 3sin(30)이 올바르게 계산됩니다. 이 생략된 곱셈은 * 및 /와 같은 우선순위를 가지므로, 나란히 쓰기와 나눗셈은 왼쪽에서 오른쪽으로 읽습니다. 많은 휴대용 공학용 계산기는 나란히 쓰기의 결합력을 나눗셈보다 높게 설정하여 1/2pi를 1/(2*pi)로 읽는데, 이는 다른 답을 냅니다. Wikipedia는 "계산기 입력 방식"에서 이러한 차이를 설명합니다. 차이가 중요한 경우에는 괄호로 의미를 명확히 할 수 있습니다.
%는 어디에 있든 100으로 나눕니다. 따라서 20%는 0.2이고, 200*15%는 30입니다. 이는 상점 계산대에서 사용하는 "현재 합계의 백분율" 키가 아니며, 나머지 연산자도 아닙니다.
풀이 예시
도 단위 모드에서 수식 sin(30)+2^3*ln(4)은 다음 순서로 계산됩니다.
sin(30)은 0.5입니다. 30도는 직각의 절반이고 그 사인 값은 1/2이기 때문입니다.2^3은 8입니다. 거듭제곱은 곱셈보다 먼저 계산됩니다.ln(4)는 1.38629436112입니다.8 * 1.38629436112은 11.090354889입니다.0.5 + 11.090354889은 11.590354889입니다.
계산기는 11.590354889를 표시합니다.
두 번째 예는 왼쪽에서 오른쪽으로 계산하는 규칙을 보여 줍니다. 6/2(1+2)에서는 괄호를 먼저 계산하여 6/2*3이 됩니다. 나눗셈과 생략된 곱셈은 같은 우선순위를 가지므로 나눗셈이 먼저 계산됩니다. 6/2는 3이고 3*3은 9입니다.
도와 라디안
각도 단위 설정은 sin, cos, tan이 입력값을 해석하는 방식과 asin, acos, atan이 반환하는 단위를 결정합니다. 도 단위 모드에서 한 바퀴는 360도입니다. 라디안 모드에서 한 바퀴는 2pi이며, 약 6.28318530718입니다. 같은 수식도 두 모드에서 매우 다른 답을 낼 수 있습니다. sin(30)은 도 단위 모드에서 0.5이고 라디안 모드에서는 -0.988031624093입니다.
숫자의 저장 및 표시 방식
모든 값은 IEEE 754 binary64 배정밀도 수이며, ECMA-262 ECMAScript 언어 사양의 6.1.6.1절에 설명된 숫자 형식입니다. 배정밀도 수는 십진수 약 15~17자리까지 표현할 수 있습니다. 화면에 표시되는 답은 유효 숫자 12자리로 한 번만 반올림됩니다. 0.000001보다 작거나 1,000,000,000,000 이상인 값은 지수 형식으로 표시되므로 0.0000001은 1E-7로 읽힙니다.
저장된 숫자는 정밀도를 모두 유지합니다. 메모리에는 화면에 표시된 12자리가 아니라 정확한 결과가 저장되며, MR은 같은 숫자로 읽히는 가장 짧은 텍스트를 다시 붙여 넣습니다. 음수 메모리 값은 괄호 안에 붙여 넣으므로, 앞에 2가 있으면 뺄셈이 아니라 곱셈으로 읽힙니다.
반올림은 어떤 결정을 내리는 데도 사용되지 않습니다. 이전 산술 계산에서 생긴 아주 작은 나머지도 실제 수로 취급됩니다. 0.1*3-0.3은 이진수에서 0이 아니라 약 5.55111512313E-17이므로, 5/(0.1*3-0.3)은 0으로 나눔 메시지 대신 9.00719925474E16을 반환합니다.
같은 이유로 도 단위 모드의 sin(180)은 1.22464679915E-16을 표시하며 0을 표시하지 않습니다. 이 오차는 1천조분의 1 정도이며 그 정도로 작게 유지됩니다. 탄젠트는 예외이며 아래에서 별도로 처리합니다.
계산기가 거부하는 입력
다음과 같은 경우 계산기는 답 대신 메시지를 표시합니다.
1e-400처럼 배정밀도 수로 표현하기에 너무 작은 수를 입력한 경우를 포함하여 분모가 정확히 0인 경우. 이러한 수는 읽는 순간 이미 0이 됩니다.sqrt에 음수를 입력한 경우log또는ln에 0보다 크지 않은 수를 입력한 경우- NIST DLMF 4.14절에 제시된 정의역인 -1부터 1을 벗어난 수를
asin또는acos에 입력한 경우 - 값이 존재하지 않는 90도 또는 그 홀수 배에서
tan을 사용한 경우 - 0부터 170까지의 정수가 아닌 값에 팩토리얼을 적용한 경우
1.2.3처럼 숫자에 소수점이 두 번째로 포함된 경우- 수식이 512자를 초과하는 경우
170이라는 제한은 선호 사항이 아니라 숫자 형식의 속성입니다. 170 팩토리얼은 약 7.25741561531E306으로 배정밀도 범위에 들어가지만, 171 팩토리얼은 그렇지 않습니다. 512자 제한은 코드에서 검사됩니다. 계산기가 수행할 작업량을 결정하는 것이 수식의 길이이기 때문입니다.
탄젠트 검사는 각도를 소수점 이하 9자리로 반올림한 뒤 테스트합니다. 이렇게 하면 이전 계산에서 생긴 오차가 정확한 점근선에 다시 겹쳐지지만, 양쪽에 각각 폭이 약 5e-10도인 거부 구간이 생깁니다. tan(89.9999999994)는 95,493,592,025를 반환하지만 tan(89.9999999995)는 거부됩니다. 라디안 모드에서는 이런 검사를 하지 않습니다. 입력한 라디안 값이 원주율의 절반에 가까워도 특별히 취급되지 않는 그저 다른 숫자 하나일 뿐이기 때문입니다.
자주 묻는 질문
여기서 % 키는 어떤 기능을 하나요?
이 키는 나타나는 위치와 관계없이 100으로 나눕니다. 100+10%은 100.1입니다. 100에 0.1을 더한다는 뜻이기 때문입니다. 앞에 나온 값의 백분율을 계산하는 기능은 아닙니다.
2^3^2는 64인가요, 아니면 512인가요?
512. 거듭제곱은 오른쪽에서 묶이므로 2^(3^2)를 의미하며, 이는 2^9입니다. 이는 ISO 80000-2:2019를 따릅니다.
왜 6/2(1+2)는 9이고 1이 아닌가요?
생략된 곱셈은 나눗셈과 같은 우선순위를 가지며, 같은 우선순위의 연산은 왼쪽에서 오른쪽으로 읽습니다. 나란히 쓰기의 결합력을 더 높게 설정한 계산기는 1을 답으로 냅니다. 괄호를 사용하면 혼동을 없앨 수 있습니다.
왜 sin(180)은 0을 표시하지 않나요?
180도는 먼저 라디안으로 변환되며, 원주율은 이진수로 정확히 표현할 수 없기 때문입니다. 답은 약 1.2e-16이며, 이는 기계가 실제로 사용한 수의 사인 값입니다.
log와 ln의 차이는 무엇인가요?
log의 밑은 10이므로 log(1000)은 3입니다. ln의 밑은 e이므로 ln(e)은 1입니다. 키패드 표기는 TI 및 Casio 공학용 계산기와 같은 관례를 따릅니다.
왜 170을 초과하는 팩토리얼은 거부되나요? 171 팩토리얼은 배정밀도 수가 저장할 수 있는 어떤 수보다도 크므로, 답이 숫자가 아닌 무한대가 됩니다. 계산기는 의미 없는 결과를 표시하는 대신 이를 알립니다.
출처
- IEEE 754-2019, 부동소수점 산술에 관한 IEEE 표준
- ECMA-262, ECMAScript 언어 사양, 6.1.6.1절 "숫자 형식"
- ISO 80000-2:2019, 수량 및 단위, 제2부: 수학 기호 및 기호
- NIST 수학 함수 디지털 라이브러리, 4.2절 및 4.14절
- Wikipedia, "연산 순서"
- Wikipedia, "계산기 입력 방식"