表达式计算器
【摘要】 作品简介:支持四则运算、括号、幂与数学函数的安全表达式求值器,不使用 eval表达式计算器(Expression Evaluator)安全地计算数学表达式,支持四则运算、括号、幂、取模、常用数学函数与常量。纯 HTML/CSS/JavaScript 单文件实现,零依赖、零后端,使用自建解析器求值,不调用 eval。功能特性运算符:+ - * / %(取模)^(幂,右结合)数学函数:sqrt、...

表达式计算器(Expression Evaluator)
安全地计算数学表达式,支持四则运算、括号、幂、取模、常用数学函数与常量。纯 HTML/CSS/JavaScript 单文件实现,零依赖、零后端,使用自建解析器求值,不调用 eval。
功能特性
- 运算符:
+-*/%(取模)^(幂,右结合)
- 数学函数:
sqrt、abs、round、floor、ceil、min、max、pow、log(自然对数)、ln、exp、sin、cos、tan
- 常量:
pi、e,标识符大小写不敏感
- 实时求值:输入即得结果,非法表达式给出明确错误提示
- 屏幕键盘:数字、运算符、括号、函数按钮一应俱全,支持退格与清空
- 历史记录:按回车或点击
=记录,点击历史项可回填表达式
- 一键复制:复制当前结果
- 安全求值:自建词法分析与递归下降解析器,表达式无法访问页面或浏览器环境
解析流程
表达式字符串
→ tokenize 词法分析(数字、标识符、运算符、括号)
→ 递归下降解析并求值
parseAdd 处理 + -
parseMul 处理 * / %
parseUnary 处理一元 + -
parsePower 处理 ^(右结合)
parsePrimary 处理数字、括号、函数、常量
→ 数值结果 / 错误信息
运算符优先级:^ 高于 * / %,高于 + -;^ 为右结合,因此 2^3^2 = 512。
示例
1 + 2 * 3 → 7
(1 + 2) * 3 → 9
2^3^2 → 512
-2^2 → -4
sqrt(3^2 + 4^2) → 5
max(2, 5) * pi → 20.7079632679
pow(2, 10) → 1024
使用场景
- 日常计算:快速求值含函数与常量的数学表达式
- 教学演示:观察运算符优先级与结合性对结果的影响
- 脚本核算:计算几何、统计等公式的数值
- 离线使用:浏览器打开即用,不依赖任何网络资源
快速开始
无需安装与构建,直接用浏览器打开 index.html 即可使用,或在任意静态服务器下访问:
python3 -m http.server 8036
# 访问 http://localhost:8036/index.html
技术栈
- HTML5 + CSS3 + 原生 JavaScript(零第三方依赖)
- 自建
tokenize词法分析与递归下降parse,核心入口evaluate(expr)
- 剪贴板:
navigator.clipboard.writeText
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)