AZ Tools

수식 평가기

일상

종이에 적는 식의 안전한 계산기: `(1 + 2) * 3.14`·`sqrt(2)`·`sin(pi / 4)`·`log10(1000)`·`2^10`. 연산자 `+ - * / % ^` 작동; 함수·상수는 `Math.*`에 매핑된 고정 허용 목록 — `sin/cos/tan/asin/acos/atan/atan2`·`sinh/cosh/tanh`·`sqrt/cbrt/abs/sign/floor/ceil/round/trunc`·`log/log2/log10/ln/exp/pow`·`min/max/hypot`·`pi/e/tau`. 목록 밖 식별자 거부 — 입력이 페이지나 JavaScript 런타임에 접근 불가.

예시:

결과

8

구조적으로 안전: 식별자는 허용 목록(sin·cos·tan·sqrt·log·ln·exp·pi·e·tau·min·max·hypot·…)에서 와야 함. 변수·문자열 리터럴·세미콜론 없음.

사용법

  1. 식 입력 — 연산자·괄호·소수·허용된 이름.
  2. 결과 실시간 업데이트; 필요 시 복사해 다른 곳에 붙여넣기.
  3. `^`은 지수(수학처럼·비트 XOR 아님). 변수 거듭제곱은 `pow(x, y)` 또는 `x^y`.

자주 묻는 질문

내부적으로 `eval` 사용?
`new Function(...)` 호출 사용 — 단 입력이 식별자 파싱 후 허용 목록(`sin`·`sqrt`·`pi`·…)과 매치된 후에만. `document`·`window`·`fetch`·문자열 리터럴·세미콜론 등은 실행 전 거부 — 식이 `Math.*` 밖에 도달할 방법 없음.
`sin` 등의 각도 단위?
라디안 — JavaScript `Math.sin`과 일치. 일반 각도는 `pi`로 — `sin(pi / 2)`는 1·`cos(pi)`는 -1. 도(degree) 변환은 전달 전 `pi / 180` 곱셈.
큰 계산이 정밀도를 잃는 이유?
JavaScript 숫자는 IEEE 754 double — 약 15 유효 소수 자리. `0.1 + 0.2`는 `0.30000000000000004`. 더 높은 정밀도(금융 소수·20! 이상 팩토리얼 등) 필요 시 임의 정밀도 전용 도구·라이브러리 사용.
변수·다행 스크립트는?
의도적으로 미지원 — 표면적 작게 유지가 안전한 평가의 비결. 프로그래밍 가능한 수학은 Jupyter 노트북 또는 데스크톱 계산기 사용.

관련 도구