数学

数学表达式求值器

按正确的运算优先级计算算术表达式,支持一组固定的数学函数;表达式在页面内被解析,而不是作为代码执行。

免费使用 无需注册 浏览器本地运行

工具操作区

这是解析器,不是代码执行器

网上多数快捷计算器都是在一层字符过滤之后,把表达式交给 JavaScript 引擎求值。这样虽然省事,却并不安全:过滤器必须预判到所有能触及某个名字的写法,而代码终究是以页面的完整权限运行的。本工具根本不执行代码。它先把表达式切分成词法单元,再用递归下降解析器按一套文法解析——这套文法只包含数字,加减乘除、取模与乘方运算符,括号,三个常量,以及一份固定的数学函数清单——最后从语法树算出结果。凡是文法之外的内容都会产生带位置标记的解析错误,因此未知名字只会被报错,而不会被解析到任何东西。优先级遵循通常的数学约定:乘方结合最紧且为右结合,所以 2^3^2 等于 512;前置负号在乘方之后生效,所以 -2^2 等于 -4。

如何使用数学表达式求值器

  1. 1在工具区域粘贴、输入或上传需要处理的内容。
  2. 2根据任务选择格式、尺寸、输出方式或校验选项。
  3. 3检查预览结果、提示信息或转换后的数据。
  4. 4确认结果无误后复制或下载,并用于后续工作。

数学表达式求值器的常见使用场景

快速完成日常任务

无需安装桌面软件,打开网页即可处理常见的文本、图片、数据或格式转换任务。

检查与整理内容

在提交文件、发布内容或复制结果之前,快速发现格式问题并获得结构清晰的输出。

注重隐私的浏览器处理

对于支持本地运行的工具,数据会留在当前浏览器中,不需要上传到第三方服务。

常见问题

为什么 -2^2 是负数?

因为乘方比前置符号结合得更紧,该表达式的含义是 -(2^2)。这是通常的数学读法,也与科学计算器的行为一致。若希望负号包含在底数中,请写 (-2)^2,结果为 4。

为什么未知名字会报错而不是给出结果?

因为解析器除了自己的函数与常量表之外,无法访问任何东西。它没有可回退的作用域,因此它不认识的名字不可能有任何含义。这是刻意为之:正是这一点阻止了表达式触及页面。

它会执行 JavaScript 吗?

不会。它从不调用 eval 或 Function 构造器。表达式先被切分为词法单元,再转换成只包含数字与被许可运算的小型语法树,因此注入的表达式无处可去。

为什么小数有时看起来略有偏差?

运算使用 IEEE 754 双精度浮点数——浏览器中的其他工具同样如此——所以 0.1 + 0.2 等于 0.30000000000000004。这是二进制浮点数的固有性质,而非解析错误。需要固定小数位时请对结果取整。