· 等待输入
计算历史(点一条可回填)
结果
本次计算
—- 表达式
- —
- 结果
- —
- 科学计数
- —
- 角度单位
- —
- 上一步结果 ans
- —
- 历史条数
- —
几点说明
- 数据不出浏览器 · 零网络请求 · 可断网可用。
- 词法分析和求值都是自己写的:先切成记号,再用递归下降按「表达式 → 项 → 一元 → 幂 → 原子」解析,完全没有用 eval 或 Function,所以表达式里除了数字和你允许的运算符、函数、常数之外什么都进不来。
- 运算符优先级:括号 > 幂 ^ > 一元正负 > 乘 / 除 / 取模 > 加 / 减。幂是右结合的,2 ^ 3 ^ 2 等于 2⁹;一元负号低于幂,所以 -2 ^ 2 等于 -4。取模可写 % 或 mod,两者等价。
- 百分号有两种用法:后面还跟着一个数时是取模(10 % 3 = 1),否则是「除以 100」的后缀(50% = 0.5,200 * (1 + 5%) = 210)。函数有 sqrt / abs / round / floor / ceil / min / max / log(十进对数)/ ln(自然对数)/ sin / cos / tan,常数有 pi、e,ans 是上一步的结果。
- 三角函数按上面的「角度单位」解释输入:deg 时 30 就是 30°,rad 时 30 是 30 弧度。定义域问题会明确报错而不是给出 NaN:sqrt(-1)、log(0)、除以 0、0 的负数次幂、tan 90° 都会拦下来。
- 结果显示 12 位有效数字(所以 0.1 + 0.2 显示 0.3,不是 0.30000000000000004);绝对值超过 10¹⁵ 或小于 10⁻⁹ 时改用科学计数法,两种情况都会在「科学计数」一栏同时给出。
- 键盘:Enter 或 Ctrl/⌘ + Enter 计算,Esc 清空输入,↑ / ↓ 在历史里前后翻;点历史里的任意一条会把它回填到输入框。历史最多保留 50 条,只存在本次页面里,「清空」会连历史一起清掉。
- 上限:表达式最长 500 个字符、括号最多嵌套 32 层;报错会带上出错位置(第几个字符附近),方便回头改。