运算顺序是决定先计算表达式哪一部分的约定。没有这个约定,12 + 7 × 3 既可能读作 33,也可能读作 57。规则给出的答案是 33,因为乘法要先于加法运算。PEMDAS 和 BODMAS 用两个不同的名字教的是同一条规则,包括本计算器在内的任何表达式解析器,每次按下 = 时都会执行这条规则。
要点速览
12 + 7 × 3 = 33;加上括号后(12 + 7) × 3 = 57。- 乘方从右往左结合:
2^3^2 = 512,而(2^3)^2 = 64。- 一元负号的结合力弱于乘方:
−5^2 = −25,而不是 25。- 后置百分号加的是前面数值的对应占比:
200 + 10% = 220。
一张表说清规则
这套步骤在美国被教作 PEMDAS,在英国和大部分英联邦国家则称为 BODMAS 或 BIDMAS:
| 步骤 | PEMDAS | BODMAS | 含义 |
|---|---|---|---|
| 1 | 括号 (Parentheses) | 括号 (Brackets) | 所有分组内容,从最内层开始 |
| 2 | 乘方 (Exponents) | 阶/指数 (Orders / Indices) | 乘方和开方 |
| 3 | 乘法与除法 | 除法与乘法 | 同级,从左到右 |
| 4 | 加法与减法 | 加法与减法 | 同级,从左到右 |
最常见的误解是把这个缩写当成四个严格的等级。其实不然。乘法并不比除法优先,加法也不比减法优先。每一对运算共享同一等级,按从左到右的顺序计算,这也是为什么 PEMDAS 和 BODMAS 尽管把 M 和 D 的顺序写反,得出的答案却完全一致。运算顺序指南用同一张表逐步演示了具体的计算过程。
示例一:经典陷阱
错误的读法。 12 + 7 × 3 如果严格从左到右计算,会得到 19 × 3 = 57。这不是规则给出的答案。
正确的读法。 先算乘法:7 × 3 = 21,再算 12 + 21 = 33。
输入 12+7*3,计算器返回 33。如果想强制按你自己的顺序计算,用括号:(12+7)*3 返回 57。计算器遵循的是数学规则,而不是你输入的先后顺序。反过来同样成立:100 * 2 + 3 是 203,而 100 * (2 + 3) 是 500。
缩写覆盖不到的空白
这四个字母覆盖了基本情况,但有三种常见情形落在它们之外,在计算器上经常让人栽跟头。
连续乘方从右往左结合
乘方是唯一一个从右往左结合的运算符。2^3^2 的意思是 2^(3^2) = 2^9 = 512,而不是 (2^3)^2 = 64。两者相差很大,所以最好明确写出括号。乘方详解一文更深入地讨论了这个习惯。
百分号是一个后置运算符
% 键在跟在加号或减号后面时,并不是简单地除以 100。在 200 + 10% 中,计算器把百分号读作前面数值的一个占比:200 × (1 + 0.1) = 220。同理,100 - 20% 得到 80,50 + 10% 得到 55。如果想把 200 的 10% 单独算出来作为一个数,输入 200*10%,返回 20。
隐式乘法处于普通优先级
本计算器接受不带乘号的 2π 和 3(4+1),并把它们当作普通乘法处理。有些手持计算器会把隐式乘法排在更高优先级,所以 6÷2(1+2) 在那些机器上得到 1,而在这里得到 9。这种情形并没有统一标准。诚实的解决办法是加括号。百分比指南和入门指南分别介绍了日常使用中最常见的两种失误。
本计算器执行的优先级规则
表达式经由 math.js 解析器运行,实际优先级从高到低依次是:
| 优先级 | 运算符 | 结合方向 |
|---|---|---|
| 1(最高) | 括号和函数调用 | 从最内层开始 |
| 2 | 阶乘 n!、后置百分号 % |
从左到右 |
| 3 | 乘方 ^ |
从右到左 |
| 4 | 一元负号和正号 | 从右到左 |
| 5 | 乘法、除法、取模 | 从左到右 |
| 6(最低) | 加法、减法 | 从左到右 |
示例二:2 + 3 × 4²
按表格自上而下依次计算。括号:无。乘方:4² = 16。乘法:3 × 16 = 48。加法:2 + 48 = 50。输入 2+3*4^2,得到 50。如果某个表达式无法解析,错误提示指南解释了每条提示的含义以及如何调整括号。
示例三:200 + 10%
在这张表中,百分号的处理发生在第 2 步,先于括号之后、乘法之前。所以 200 + 10% 按 200 × (1 + 0.10) = 220 计算。输入 200+10%,计算器返回 220。这也是为什么 100 - 20% 读作打八折:100 × (1 − 0.2) = 80。
常见问题
PEMDAS 和 BODMAS 哪个才对?
两个都对。它们是同一约定的两种助记法。D 和 M 的先后顺序无关紧要,因为乘法和除法同级,无论哪种写法都是从左到右计算。
8 ÷ 2 × 4 等于多少?
16。除法和乘法同级,所以从左到右计算:8 ÷ 2 = 4,再 4 × 4 = 16。
200 + 10% 等于多少?
220。百分号被视为前面数值的一个占比,所以这个表达式表示 200 × (1 + 0.1)。如果想单独得到 200 的十分之一,输入 200*10%,返回 20。
为什么 −5² 等于 −25?
乘方的结合力比一元负号强,所以 −5^2 读作 5² 的相反数。要对负数本身求平方,应写作 (−5)^2,结果是 25。
6 ÷ 2(1 + 2) 等于多少?
本计算器把隐式乘法放在普通乘法的优先级上,给出 9。有些手持计算器会把这个优先级提高,给出 1。这种写法本身就有歧义,安全的做法是用括号明确表达。