数学表达式求值
自己实现的表达式求值器:支持加减乘除取余与乘方、括号、一元负号、常量 pi/e/tau、20 多个函数、阶乘、百分号、角度/弧度切换与多行变量赋值,逐行显示结果与错误位置。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
支持 + - * / % ^、括号、一元负号、常量 pi / e / tau、函数 abs ceil floor round sqrt cbrt exp ln log log2 log10 sin cos tan asin acos atan atan2 pow min max sign,以及阶乘 n! 和百分号。
`10 % 3` 是取余,`50%` 是百分号:% 后面跟数字、变量或左括号时按取余处理。 多行可以给变量赋值(a = 5),后面的行都能用。
结果
输入表达式后这里会逐行显示结果
这个工具能做什么
- 把一串算式直接粘进来求值:支持加减乘除取余、乘方、括号、一元负号、pi / e / tau 常量,以及 sqrt、log、sin 等 20 多个函数。
- 需要分步算的场合:多行输入可以给变量赋值(a = 5),后面的行直接复用,适合物理题、报价拆分、贷款公式推导这类多步骤计算。
- 当普通计算器不够用时:它支持阶乘 n!、百分号(50% = 0.5)和角度 / 弧度切换,做三角函数题时不用自己换算单位。
- 排查表达式写法错误:报错会精确给出出错的行号和列号,并说明是括号没闭合、函数名拼错还是参数个数不对。
示例
输入
a = 5 b = 12 sqrt(a^2 + b^2) sin(pi/6) 5!
输出
a = 5 = 5 b = 12 = 12 sqrt(a^2 + b^2) = 13 sin(pi/6) = 0.5 5! = 120
角度单位默认是弧度,所以 sin(pi/6) 是 0.5;切换成「角度」后同一行会变成 sin(pi/6) ≈ 0.0087。
常见问题
50% 和 10 % 3 到底哪个是取余?
看 % 后面跟的是什么:后面是数字、变量或左括号时按取余处理,其它情况按百分号处理。所以 10 % 3 得到 1,而 50% 得到 0.5,5 + 10% 得到 5.1。
为什么 sin(30) 不是 0.5?
默认角度单位是弧度,sin(30) 算的是 30 弧度。把角度单位切成「角度」再算,或者在弧度模式下写成 sin(pi/6) 都能得到 0.5。
某一行为什么会报错,后面的行还能算吗?
不能,求值遇到第一个出错的语句就停下,出错行之后的行不会再计算。错误信息会给出「第几行第几列」和原因,例如除数不能为 0、未知函数、括号没闭合、阶乘只能用于 0–170 的整数。
变量名有什么限制?能不能叫 pi 或 sqrt?
变量名以字母或下划线开头,字母可以大小写混用,内部会统一小写。不能给常量(pi / e / tau)和函数名赋值,否则会报「不能给常量或函数名赋值」。
输入内容会被上传吗?
不会。整个求值器是页面里的一段 JavaScript 代码,自己写的 tokenizer 和解析器在本机跑,不发网络请求,断网也能用,表达式不会被记录。
关键词:数学表达式求值calculator计算器math evaluator函数表达式阶乘百分号变量赋值