同一个算式在不同计算器上可能得到不同结果。原因几乎总是各自对运算优先级的定义不同。本指南列出 SciKey 完整的优先级表,并仔细分析三个经常引发争论的算式:-2^2、2^3^2 和 6÷2(1+2)。
1. SciKey 的优先级(从高到低)
| 级别 | 运算 | 结合方向 | 示例 |
|---|---|---|---|
| 1 | 括号、函数调用 | (1+2)、sin(30) | |
| 2 | 后缀 ! % ° | 从左到右 | 5! = 120,50% = 0.5 |
| 3 | 乘方 ^ | 从右到左 | 2^3^2 = 512 |
| 4 | 一元 - + | -2^2 = −4 | |
| 5 | ×、÷、mod、省略的乘号 | 从左到右 | 6÷2(1+2) = 9 |
| 6 | +、− | 从左到右 | 10−4−3 = 3 |
同级运算符按结合方向计算:8÷2÷2 是 (8÷2)÷2 = 2,10−4−3 是 (10−4)−3 = 3。
2. 为什么 -2^2 等于 −4
在数学中,−2² 读作 −(2²) = −4:先算乘方,负号作用于结果。这与 x = 2 时 −x² = −4 是同一规则。SciKey 把一元负号的优先级排在乘方之下,所以 -2^2 返回 −4。要算 (−2)²,请用括号:(-2)^2 = 4。
指数中可以带符号:2^-3 即 2⁻³ = 0.125。
Excel 不一样
在 Microsoft Excel 中,=-2^2 返回 4。Microsoft 的文档《Excel 中的计算运算符和优先顺序》在优先级表中把负号(如 −1 中的负号)排在百分号(%)和乘方(^)之前,因此 Excel 计算的是 (−2)²。如果电子表格与计算器的结果不一致,就要怀疑这一点。在 Excel 中输入 =-(2^2) 可得 −4。
编程语言也各不相同。Python 把 -2**2 计算为 −4(与数学惯例一致),而 JavaScript 认为 -2**2 有歧义,不加括号就会报语法错误。
3. 乘方从右往左:2^3^2 = 512
在数学中,2^3^2 这样的幂塔表示 2^(3²) = 2⁹ = 512,因为要先算指数的指数。SciKey 把 ^ 视为右结合,所以 2^3^2 = 512。要算 (2³)² = 64,请写成 (2^3)^2。
Excel 的文档说明,同级运算符从左到右计算,乘方也不例外,因此在 Excel 中 =2^3^2 得 64。同样,加上括号就能在任何地方都明确意图。
4. 6÷2(1+2) 之争
这个算式在网上反复流传,有人坚持答案是 9,也有人坚持是 1。
- 读作 9: 省略的乘号也只是乘法。6÷2×3 = (6÷2)×3 = 9。
- 读作 1: 2(1+2) 像 2a 一样是一个整体,应先算。6÷(2×3) = 1。
公允的结论不是哪一方“错了”,而是这种写法本身有歧义。专业文献会避免这种写法,改用分数线或括号。
SciKey 的选择
SciKey 让省略的乘号与普通乘除同级,并从左到右计算。因此:
6÷2(1+2)= 91/2π= (1/2)×π = 1.57079632679(同时显示为 π/2)- 要算 1/(2π),请输入
1/(2π)= 0.159154943092
之所以这样选择,是因为单一规则更容易预测:无论是否写出乘号,乘除都按书写顺序计算。
其他计算器呢?
有些厂商和型号被设计成先计算省略乘号的乘法,再算普通的 × 或 ÷,因此同一个算式可能得到 1。不同型号的行为不同,请查阅考试用计算器的说明书。最稳妥的做法是从一开始就不输入有歧义的算式。
5. 后缀运算符与 %
!、% 和 ° 只作用于紧挨在前面的值。
3!2= 3! × 2 = 12(省略的乘号)2×3!= 12,而(2×3)!= 720200×15%= 200 × 0.15 = 30100+10%= 100 + 0.1 = 100.1
注意最后一个。有些台式计算器把 100 + 10 % 当作“在 100 上加 10%”(= 110),但 SciKey 的 % 只是除以 100。要加价 10%,请输入 100×(1+10%) = 110。
6. mod 的优先级与符号
mod 与乘法同级:2+7 mod 3 是 2 + (7 mod 3) = 3。结果的符号与除数相同:-7 mod 3 = 2,7 mod -3 = −2。在 -7 mod 3 中,一元负号先与 7 结合,因为一元符号的级别高于乘法级。
7. 函数、常数与乘方
函数调用优先级最高,所以 sin(30)^2 是 (sin 30°)² = 0.25,与教材中的 sin²30° 相同(DEG)。要算 30² 的正弦,请写在括号内:sin(30^2)。SciKey 要求函数带括号,所以 sin 30^2 这种有歧义的输入不会被接受。
常数后面的乘方比省略的乘号结合得更紧。2π^2 是 2×(π²) = 19.7392088022,而不是 (2π)² = 39.4784176044。也正因如此,球的表面积 4πr² 输入为 4πx^2 时能按预期计算。
8. 用括号消除歧义
比背规则更可靠的是大方地使用括号。
| 意图 | 有歧义的输入 | 明确的输入 |
|---|---|---|
| a/(bc) | a/bc | a/(b×c) |
| (−x)² | -x^2 | (-x)^2 |
| e^(−t/RC) | e^-t/RC | e^(-t/(R×C)) |
| (a+b)/2 | a+b/2 | (a+b)/2 |
表中的 a、b、t、R、C 只是占位符;在 SciKey 中请替换为数字或变量 x、y、z(注意 R 已被气体常数占用)。第三行的 e^-t/RC 会被计算为 (e^−t)/RC。只要指数是一个表达式,就给它加括号。多余的括号从不会让答案出错,缺少括号却常常会。
9. 要点
- 乘方先于一元负号:
-2^2= −4(Excel 得 4) - 乘方从右往左:
2^3^2= 512 - ×、÷ 与省略的乘号同级,从左到右:
6÷2(1+2)= 9 %表示除以 100:100+10%= 100.1- 拿不准就加括号