数学表达式求值器

🧮 Math Expression Evaluate Device - Online Calculate Math Expression : Support + - * / % ^ (

Evaluate math expressions, functions and unit-aware calculations safely in your browser — no install, no upload.

📐 工作原理与说明
数学表达式安全求值
字符白名单校验:仅允许数字、+-*/%^()., 空格与函数名字母
标识符白名单:仅放行 sin/cos/tan/sqrt/abs/ln/log/floor/ceil/round/min/max/pi/e,并拒绝成员访问(如 .constructor)
语法转换:^ → **(幂运算);数字后 % → (数字/100)(百分比)
校验通过后才交给 new Function 求值,非法标识符与属性链一律拒绝
长度限制 ≤200 字符;结果非有限数或抛错 → 提示表达式无效
解析并计算数学表达式的值。
  • 优先级:先括号,再函数与幂,其次乘除,最后加减。
  • 算法:常用调度场算法(Shunting-yard)把中缀式转为后缀式再求值,避免歧义。
  • 支持:三角函数、对数、开方、取模与常量 π、e。
  • 安全:绝不可用 eval() 执行用户输入,应使用专门的表达式解析器。

🕐 最近计算历史

📚 深度解析:数学表达式求值器

💡 常见使用场景

求值
输入 `2*(3+4)^2 - sqrt(16)` → 2·49 − 4 = 94。

❓ 常见问题(FAQ)

支持哪些函数?
常见 sqrt、pow、sin/cos、log、abs、round 等。
为什么 0.1 + 0.2 不等于 0.3?
因为二进制浮点无法精确表示十进制的 0.1,二者相加的结果与 0.3 的浮点表示有极小差异。这是 IEEE 754 的固有特性,不是计算错误。涉及金额或需要精确比较时,应使用定点数、整数分单位或专门的十进制库,比较时用容差而非等号。

Formula & Standard References

Item Formula / Note Source / Standard
Operator precedence parentheses, power, multiply-divide, add-subtract ISO 80000-2
Floating point binary floats round: 0.1 + 0.2 does not equal 0.3 IEEE 754-2008
Domain validate domains for sqrt and logarithms ISO 80000-2