100 + 5% 在 iPhone 计算器是 105,在 Excel 是 100.05——结果差了一个数量级。这不是哪个算错,是 % 按钮在不同流派下被赋予了不同含义。理清四种语义,再不会被结果搞糊涂。
同一个 100 + 5%,四个答案
| 工具 | 100 + 5% | 100 - 5% | 100 × 5% | 100 ÷ 5% |
|---|---|---|---|---|
| Windows 计算器(标准模式) | 105 | 95 | 5 | 2000 |
| iOS / Mac 计算器 | 105 | 95 | 5 | 2000 |
| Google 搜索计算器 | 105 | 95 | 5 | 2000 |
| Excel / Google Sheets | 100.05 | 99.95 | 5 | 2000 |
| 科学计算器(Casio fx-991 / TI-30) | 100.05 | 99.95 | 5 | 2000 |
| 财务计算器(HP 12C) | 5(要再按 + 才得 105) | — | — | — |
关键观察:
- 加减上下文:分两派——105 派(手机/Windows/Google)和 100.05 派(Excel/科学计算器)
- 乘除上下文:全部一致——
5%一律当 0.05 处理 - 财务计算器
%是独立按钮,不和算式连续运算
流派 A:上下文敏感(手机/Windows/Google)
这一派的规则是 % 在不同操作符后面有不同含义:
A + B% → A + (A × B / 100) 即"在 A 上加 B%"
A - B% → A - (A × B / 100) 即"在 A 上减 B%"
A × B% → A × (B / 100) B% 当字面 0.B
A ÷ B% → A ÷ (B / 100) B% 当字面 0.B
为什么这么设计:手持计算器的目标用户算的是日常账:
- “原价 200 加 8% 增值税多少”→
200 + 8%= 216 ✓ - “标价 500 打 8 折”→
500 - 20%= 400 ✓ - “5 折后 250 元,原价多少”→
250 ÷ 50%= 500 ✓
这套语义在加减上和数学定义不一致——5% 严格说就是 0.05,加上 100 应该是 100.05。但用户买东西从来不写 100 + 0.05,所以厂商干脆把 % 在加减时改成”前一项的百分之”。
iOS 计算器额外的小坑:长按结果有时会显示完整精度的中间值,跟 Windows 略有差异,但 100 + 5% 这种基本算式两家结果一致。
流派 B:字面量(Excel / 科学计算器)
这一派规则简单粗暴:
B% ≡ B / 100 永远,无视上下文
所以:
=100+5%= 100 + 0.05 = 100.05=100-5%= 100 - 0.05 = 99.95=100*5%= 100 × 0.05 = 5=100/5%= 100 ÷ 0.05 = 2000
为什么 Excel 选这套:电子表格的目标用户写公式而不是算账。公式里的 % 是数学符号,不是 UI 按钮——σ = 5% 应该等于 0.05,否则 MAX_ERROR = 1% 这种设定会和 1 + MAX_ERROR 冲突。Excel 在帮助里明确写:“% 是后缀运算符,将其前面的数值除以 100”。
要在 Excel 里实现”加价 5%“必须显式写:
=A1 * (1 + 5%) 加 5%
=A1 * (1 + 0.05) 等价
=A1 * 1.05 最简
=A1 * (1 - 5%) 减 5%(打 9.5 折)
流派 C:HP 12C / 商业计算器
HP 12C 这类财务计算器有 %、Δ%、%T 三个按钮:
| 按钮 | 含义 | 例子 |
|---|---|---|
% | X 的 Y%(X 留在 stack) | 100 ENTER 5 % → 5(100 还在 stack) |
Δ% | 从 X 到 Y 的变化百分比 | 100 ENTER 120 Δ% → 20 |
%T | Y 占 X 的百分比 | 200 ENTER 50 %T → 25 |
关键差异:HP 12C 按 % 不会消耗 stack 上的 X,方便接着按 + 得到加价后的值:
100 ENTER 5 % → 5(X = 5,Y = 100)
+ → 105(在 100 的基础上加 5)
这种”逆波兰 + 不消耗”的设计让”加价/折扣”可以无缝连续算。会计师和金融从业者用 HP 12C 不是因为它强大,而是因为这套交互逻辑刻进了肌肉记忆。
流派 D:Google “5% of 100” 自然语言
Google 搜索框还接受人话:
- 搜
5% of 100→ 5 - 搜
what is 5% of 100→ 5 - 搜
100 + 5%→ 105 - 搜
100 increased by 5%→ 105 - 搜
100 decreased by 5%→ 95
这是流派 A(上下文敏感)的自然语言皮,规则同 Windows 计算器。但它也接受字面量:搜 100 * 5% 给 5,搜 100 + 0.05 给 100.05——和 100 + 5% 不一样。
加减乘除四种上下文的实操速查
记一张表,再不被坑:
| 想算 | 推荐写法(任何工具通用) | 别用 % 按钮的原因 |
|---|---|---|
| 原价 100 加 8% | 100 × 1.08 | Excel 算 100.08 不是 108 |
| 原价 100 减 5%(打 9.5 折) | 100 × 0.95 | 同上 |
| 原价 200 打 7 折 | 200 × 0.7 | 直观,不靠”100% - 30%“ |
| 5% 是多少(基数 100) | 100 × 0.05 或 100 × 5/100 | 5% 在 Excel 是 0.05,乘法对 |
| 折后 350 反推原价(打 7 折) | 350 / 0.7 = 500 | 反向除回去最直观 |
| 从 100 涨到 120 涨幅 | (120 - 100) / 100 = 0.2 = 20% | 不存在统一的”涨幅按钮” |
| 5% 的人吃掉 100 万,总人数 | 1000000 / 0.05 = 2000 万 | 除以小数 = 反推总量 |
误算高发场景
坑 1:复利不是加百分比相加
1000 元投资两年,第一年 +5%,第二年 +5%,最终:
错:1000 + 10% = 1100
对:1000 × 1.05 × 1.05 = 1102.50
坑 2:先加再减不等于先减再加
100 加 10% 再减 10%:100 × 1.1 × 0.9 = 99
100 减 10% 再加 10%:100 × 0.9 × 1.1 = 99
两种顺序结果一样(巧合于乘法交换律),但都不是 100——加减不可逆。
坑 3:百分比的差是百分点不是百分比
利率从 5% 涨到 6%
错:涨了 1%
对:涨了 1 个百分点(百分点)= 涨了 20%(百分比)
新闻里”加息 25 基点”的”基点”= 0.01 个百分点 = 0.0001。
坑 4:负数的”涨跌幅”无意义
利润从 -100 变到 -50:涨了 50% 还是跌了 50%?
答:公式 (-50 - (-100)) / |-100| = 50%,但说"涨"还是"跌"看上下文
财报口径里这种情况一般标 N/M(无意义)或写绝对值差。
一句话总结
% 在 + 和 - 上下文有两派——手机/Windows 给 105、Excel 给 100.05;× 和 ÷ 上下文全家一致,5% 一律当 0.05。遇到加价/折扣永远写 × 1.08 或 × 0.95,不靠 % 按钮,跨工具结果不会变。