数学表达式求值
四则/幂/函数/常量实时求值,手写解析器不用 eval。
请输入数学表达式。
原因:输入为空。
建议:如 2+3*4、sqrt(2)^2、max(1, 2, 3)。
结果(本地解析求值,不用 eval)
输入表达式后实时计算
使用说明
这个工具解决什么问题
临时算一个带函数的表达式,开计算器一个个按太慢,搜索框里的计算器函数支持又残缺。这个工具输入表达式实时出结果:四则、幂、取模、括号随意组合,sqrt、ln、log、log2、sin、cos、tan、abs、floor、ceil、round、min、max、pow 等二十余个函数,pi、e、tau 常量直接用,写公式验证、排查算法精度都顺手。
核心能力
表达式求值:四则、幂(右结合)、取模、括号嵌套,输入即算。函数库:二十余个常用函数,覆盖开方、对数、三角与取整。常量支持:pi、e、tau 免声明直接用。安全实现:手写递归下降解析器,不用 eval,纯浏览器本地运行。错误明示:除零、定义域错误明确提示,不给含糊结果。
使用建议
三角函数记得是弧度制,角度先换算;对数按底数区分,ln 是自然对数,log2 是以 2 为底;min、max、pow 支持多参数组合,嵌套着写能省不少中间步骤。精度按双精度浮点口径,对极端精度有要求的结果自行校验。
常见问题
为什么不用 eval 实现?
eval 把字符串直接当代码执行,粘贴来路不明的表达式存在注入风险。本工具用手写递归下降解析器,只认数字、运算符与白名单函数,表达式之外的任何东西都进不了执行层,安全性是两回事。
sin(30) 为什么不等于 0.5?
本工具三角函数按弧度制,30 指 30 弧度。要按角度计算,先换成弧度:30 度即 pi 除以 6,输入 sin(pi/6) 得到的才是 0.5。数学与多数编程语言默认同为弧度制。
2^3^2 等于多少,为什么?
512。幂运算是右结合:先算 3 的平方得 9,再算 2 的 9 次方得 512。这与四则运算从左往右的习惯不同,是数学与多数计算器的通行口径,连写幂时建议加括号明确意图。