计算器(表达式 · 括号 · 百分号 · 幂与开方)

整行输入算式再出结果,支持括号、乘除、次方、开方、对数、三角函数和百分号(能算“120 加 15% 等于 138”这类题)。键盘直接敲,也可以点下面的按键。全部在你本机解析计算。

Enter 出结果;括号、减号都可以直接敲键盘。

五组算好的式子

输入结果科学计数法按哪条规则
120+15%1381.38 × 10^2+ 号的百分数按左边的数来取
2^101,0241.024 × 10^3^ 是乘方,结果按千位分组
sqrt(3^2+4^2)55 × 10^0函数名后面要跟一对括号
2 366 × 10^0两个数之间的空格是乘号,不是 23
0.1+0.20.33 × 10^−1浮点尾巴按 12 位有效数字清掉
文法、弧度与精度

支持哪些写法

类别 写法 说明
四则与括号 + - * / ( ),× ÷ 也可以直接输入 标准优先级,括号随意嵌套
幂与开方 2^10、sqrt(2)、cbrt(27) ^ 右结合,2^3^2 是 2^9
百分号 50%、120+15% 见下一节,两种含义
函数 abs floor ceil round ln log10 log2 exp sin cos tan asin acos atan log10( 是一个整体,不会被拆开
常量 pi、e 也可写作 2pi,省略的乘号会自动补上
科学计数 1.5e3、2e-4 等价于 1500 与 0.0002
千分位逗号 1,000+1 逗号只在「前面有数字、后面正好三位」时当分组符;3,4 这类会直接报错,不会悄悄当成 34
空格 1 + 2 3 空格是运算边界,2 3 读作 2×3 = 6,所以结果是 7,不会拼成 23

百分号有两种含义,这里都支持

50% 就是 50 ÷ 100 = 0.5。但当百分号紧跟在加号或减号后面时,它按左边那个值取百分比——这是纸质计算器和手机计算器的行为:

  • 120+15% → 120 + 120×15% = 138(涨了 15%)
  • 120-15% → 102(打了 85 折)
  • 120+15%+10% → 前一步结果 138,再加 138×10% = 151.8(连续涨价按复利滚动,符合直觉)
  • 120*15% → 120 × 0.15 = 18,此时百分号退回普通含义

需要更严谨的口径时,直接把 120*1.15 写出来,可读性也更好。

三角函数用弧度

sin(pi/2) = 1。角度制请自己换算:sin(45*pi/180)。之所以不做角度开关,是因为同一行里混用两种单位更容易出错。

精度说明

结果按 12 位有效数字 显示。这一步主要用来消掉 0.1+0.2 得到 0.30000000000000004 这类二进制浮点的尾巴——它不是这套实现的问题,是 JavaScript 使用 IEEE 754 双精度数的必然结果,绝大多数语言都如此。

所以:

  • 需要分毫不差的金额累加、精确小数运算,请换用十进制精确库或表格软件;
  • 需要 15 位以上有效数字的科学计算,这里也会被截到 12 位;
  • 溢出(比如 10^400)会直接报「超出可显示范围」而不是给出 Infinity。

输入的内容去哪了

页面里没有 eval:算式先按上面的文法切成 token,再由递归下降解析成表达式树,最后求值。全程在你自己的浏览器里跑完,算式本身不进请求体,输入的算式不会离开这台设备。

微信
微信
支付宝
支付宝