在任意计算器中输入 2 + 3 × 4,得到的答案是 14,而不是 20。计算器并非从左到右依次读取算式——它会先按优先级对运算进行排序。这种排序规则就是运算顺序,是每一款表达式计算器在显示结果之前都必须遵循的固定规则。
掌握这些规则,是你能够信任计算结果、而不是对结果感到莫名困惑的关键所在。以下就是从你按下等号到数字出现之间,计算器究竟做了什么。
计算器遵循的优先级阶梯
所有标准计算都遵循同一套四级优先级阶梯,在美国通常记为 PEMDAS,在其他地区则记为 BODMAS。计算器会先完整处理最高一级,再依次向下:
- 括号——
( )内的内容最先计算,从最内层括号向外逐层展开。 - 指数(乘方)——幂运算和开方,例如
3²或√9。 - 乘法和除法——作为同一级别一并处理,而非两个独立级别。
- 加法和减法——同样共享同一级别。
因此在 2 + 3 × 4 中,乘法级别高于加法级别:计算器先计算 3 × 4 = 12,再计算 2 + 12 = 14。加号虽然先被输入,却最后被计算。

几乎所有人都会搞错的规则
PEMDAS 中的字母顺序容易让人误以为乘法优先于除法、加法优先于减法,但实际并非如此。乘法和除法同级,加法和减法也同级。当两个同级运算相邻时,计算器通过从左到右的顺序来决定先后。
这一点比看起来更重要。以 16 ÷ 4 ÷ 4 为例,从左到右计算,结果是 (16 ÷ 4) ÷ 4 = 1,而不是 16 ÷ (4 ÷ 4) = 16。同理,10 − 4 + 2 的结果是 (10 − 4) + 2 = 8,而不是 4。根据标准运算顺序规则,同级运算始终从左到右依次计算。
指数和括号的位置
指数在任何乘除法之前处理,因此 2 + 3² 会先变为 2 + 9 = 11。连续指数有其特殊之处:它们是右结合的,即计算器从上到下(从右到左)依次计算。上方的计算器将 ^ 键转换为 JavaScript 的幂运算符,将 2^3^2 计算为 2^(3²) = 2⁹ = 512,而不是 (2³)² = 64。
括号是唯一能覆盖整个优先级阶梯的工具。将算式的某一部分用括号括起来,可以强制将其提前计算:结果变为 (2 + 3) × 4 = 20,而不是 14。科学函数也遵循同样的逻辑——sin、log 和 √ 都会先计算括号内的内容,再将结果代入整个算式。
本计算器如何应用运算顺序
上方的工具是一款表达式计算器:它不会在你每次按键时立即运算,而是读取你输入的完整算式,将其作为一个整体表达式进行求值。在内部,它将该表达式交由浏览器的 JavaScript 引擎处理,后者严格按照上述优先级阶梯进行计算。这就是为什么显示屏上的 2 + 3 × 4 在你按下等号的瞬间就返回 14。
有一个有意为之的限制值得注意:计算器需要明确输入 ×。输入 2(3 + 4) 不会被识别为乘法——你必须输入 2 × (3 + 4)。这个额外的按键并非疏漏,而是为了规避算术中争议最多的问题之一。
著名的歧义:6 ÷ 2(1 + 2)
像 6 ÷ 2(1 + 2) 这样的算式之所以在网上广泛流传,是因为不同计算器给出的答案确实不同。问题的根源在于隐式乘法——两个数值紧挨在一起,中间没有任何运算符号。有些计算器赋予这种并列写法比普通除法更高的优先级,另一些则将其视为普通乘法处理。
这种分歧有据可查。像 1/2x 这样的算式,TI-82 和许多现代卡西欧型号会将其解读为 1/(2x),而 TI-83 及 1996 年以后发布的所有 TI 计算器则解读为 (1/2)x。两种计算器都没有问题——是这种写法本身存在歧义,唯一真正的解决办法是加上括号,明确表达你的意图。
掌控计算结果
养成以下几个习惯,可以让运算顺序为你所用,而不是给你添麻烦:
- 有疑问时加括号——括号不费任何代价,却能消除所有歧义,包括隐式乘法的陷阱。
- 不要以为乘法一定优先于除法——两者同级,计算器只是从左到右依次计算。
- 注意负号——大多数计算器将
−3²读作−(3²) = −9;如果你想计算负三的平方,请输入(−3)²。 - 将长算式拆分成小段——用括号将每个部分分组,而不是依赖一条没有分隔的长算式。
- 先估算——一个粗略的心算结果,能帮你发现优先级出错导致答案偏差过大的情况。
自我检验:在上方计算器中输入 2 + 3 × 4。如果结果是 14,说明它正确遵循了运算顺序;如果你期望得到 20,说明你是在从左到右逐一计算,而不是按优先级处理。