# 科学计算器 **Repository Path**: lilhand/scientific-calculator ## Basic Information - **Project Name**: 科学计算器 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-09 - **Last Updated**: 2026-10-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 科学计算器(Scientific Calculator) 一个纯前端、零依赖的科学计算器,带 **存储器(M+ / M− / MR / MC)** 与 **历史记录** 两层记忆功能,数据通过 localStorage 持久化,刷新页面不丢失。 ## 功能 ### 科学计算 - 四则运算、括号、正负切换(±)、百分比(%)、取模(mod) - 三角函数 sin / cos / tan(DEG / RAD 一键切换)、ln、log、√、x²、xʸ、n!、π、e - 隐式乘法:`2π`、`3(4+5)`、`2sin30` 直接计算 - 实时预览:输入过程中即显示求值结果 - 友好错误提示:除以零、负数开方、括号不匹配、阶乘非整数等 - 结果保留 12 位有效数字,自动消除 `0.1+0.2=0.30000000000000004` 一类浮点噪声;超大/超小的结果自动切换科学记数法 ### 记忆功能 | 按键 | 作用 | |------|------| | M+ | 把当前结果累加入存储器 | | M− | 把当前结果从存储器中减去 | | MR | 读出存储值并插入当前表达式 | | MC | 清空存储器 | - 显示屏上的 **M** 指示灯表示存储器非空,悬停可查看当前存储值 - 历史记录:每次按 `=` 自动记录表达式与结果,最新在上(上限 100 条),点击任意记录即可把该结果复用到当前表达式,支持一键清空 - 存储器、历史记录、DEG/RAD 偏好均保存在浏览器 localStorage 中,关闭页面后再打开依然存在 ### 键盘快捷键 | 按键 | 功能 | |------|------| | `0-9` `.` | 数字与小数点 | | `+` `-` `*` `/` | 加、减、乘、除 | | `^` `( )` `%` `!` | 幂、括号、百分比、阶乘 | | `Enter` | 求值(=) | | `Backspace` | 退格 | | `Delete` | 清空当前输入(CE) | | `Esc` | 全部清空(AC) | ## 使用 无需安装任何依赖,两种方式任选: 1. 直接双击打开 `index.html`; 2. 或在项目目录启动本地服务:`python -m http.server 8000`,然后访问 。 ## 目录结构 ``` ├── index.html # 页面结构 ├── css/style.css # 深色主题样式 ├── js/parser.js # 表达式解析器:词法分析 + 递归下降求值(不使用 eval) └── js/app.js # 界面交互、存储器、历史记录与持久化 ``` ## 技术说明 - 表达式求值采用**词法分析 + 递归下降解析**实现,不使用 `eval` - 运算优先级:括号 > 函数与后缀(² ! %)> 幂 `^` > 一元正负 > 乘除与 mod(含隐式乘法)> 加减;幂运算右结合 - 纯原生 HTML / CSS / JavaScript,兼容现代浏览器(Chrome / Edge / Firefox / Safari) ## License MIT