表达式计算器

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

表达式计算器(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)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。