首页 / 工具 / 计算器

计算器

四则运算加历史记录,支持键盘输入与上一步追溯。括号、幂、取模、常用函数与常数都在,解析器是自己写的,不用 eval。

· 等待输入

计算历史(点一条可回填)
    结果

    本次计算

    —
    表达式
    —
    结果
    —
    科学计数
    —
    角度单位
    —
    上一步结果 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 层;报错会带上出错位置(第几个字符附近),方便回头改。