跳到主内容
UniKit

数学表达式求值

自己实现的表达式求值器:支持加减乘除取余与乘方、括号、一元负号、常量 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函数表达式阶乘百分号变量赋值

同类工具