数学重学 - 03 比例百分比与增长率

这是 数学重学路线图 阶段〇的子页面

比例、百分比与增长率

这一章涉及的内容在日常生活和工作中出现频率极高

房贷、工资谈判、投资理财、系统扩容预测——全都绕不开这些概念

一、比和比例

直觉理解

就是两个量之间的关系,用来回答”谁多谁少、多多少”这类问题

想象一杯奶茶:奶和茶的比是 3:7,意思是每10份里3份是奶、7份是茶

比例就是”两个比相等”,即 a:b = c:d

比的基本性质

比可以同时乘或除以同一个非零数,值不变

3:2 = 6:4 = 15:10

化简比:就像化简分数一样,找最大公因数

例:12:8 = 3:2

比例的分类

正比例:y = kx(k > 0),一个变大另一个也变大

例:时薪固定时,工作时间越长收入越多

例:流量和服务器成本(在一定范围内)

反比例:y = k/x(k > 0),一个变大另一个变小

例:速度越快,到达目的地时间越短

例:并行进程数越多,每个进程分到的内存越少

比例的实际应用

男女比 3:2 的团队有50人,男多少人?

男 = 50 × 3/(3+2) = 30

配比问题:浓度30%的盐水200ml,加多少水稀释到10%?

盐的量不变:200 × 30% = (200 + x) × 10%

60 = 20 + 0.1x → x = 400ml

Python 代码:比例分配

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def ratio_split(total, *parts):
"""按比例分配
例: ratio_split(1000, 3, 2, 5) → [300.0, 200.0, 500.0]
"""
s = sum(parts)
return [total * p / s for p in parts]

# 示例:1000元按 3:2:5 分给三个人
print(ratio_split(1000, 3, 2, 5))
# [300.0, 200.0, 500.0]

# 示例:团队50人,男女比 3:2
print(ratio_split(50, 3, 2))
# [30.0, 20.0]

二、百分比

直觉理解

百分比的本质就是以100为分母的分数

为什么用100?因为人脑对”百分之多少”有直觉,对 7/13 这种就很懵

25% = 25/100 = 1/4 = 0.25

常见百分比速记

| 百分比 | 分数 | 小数 |
| 10% | 1/10 | 0.1 |
| 25% | 1/4 | 0.25 |
| 33.3% | 1/3 | 0.333 |
| 50% | 1/2 | 0.5 |
| 75% | 3/4 | 0.75 |
| 100% | 1 | 1.0 |
| 200% | 2 | 2.0 |

百分比的计算

某量的百分比:量 × 百分比

5000元的20% = 5000 × 0.2 = 1000元

已知部分求百分比:部分 / 总量 × 100%

班上40人,8人戴眼镜 → 8/40 × 100% = 20%

已知百分比求总量:部分 / 百分比

某商品打8折后卖800元,原价 = 800 / 0.8 = 1000元

三、百分点 vs 百分比(高频混淆)

这是什么概念?

很多新闻稿和数据报告里混用,一定要分清

百分点(percentage point):两个百分比之间的绝对差

百分比变化(percent change):相对于原值的变化幅度

经典例子

错误率从 10% 上升到 15%

涨了 5个百分点(绝对差:15% - 10% = 5%pt)

涨了 **50%**(相对变化:5% / 10% × 100% = 50%)

这两种说法都对,但表达的含义完全不同

为什么重要?

新闻标题:”失业率上升了50%”vs”失业率上升了5个百分点”

前者听起来吓人,后者听起来温和——但可能是同一件事

工作场景:汇报时说”错误率从0.1%上升到0.2%”,

说”上升了0.1个百分点”——领导觉得还好

说”翻倍了”——领导要拍桌子

都是事实,但观感完全不同

四、折扣与税率

折扣

打几折 = 乘以 几/10

打8折 = × 0.8

打65折 = × 0.65

买一送一 = 打5折

先涨后折的陷阱

商家先涨价20%再打8折,消费者以为赚了?

实际:× 1.2 × 0.8 = × 0.96

反而比原价**降了4%**——但消费者心理上觉得”打了八折”

如果先涨价25%再打8折:× 1.25 × 0.8 = × 1.0,原价卖

如果先涨价50%再打8折:× 1.5 × 0.8 = × 1.2,反而贵了20%

增值税

中国增值税一般纳税人税率13%

含税价 = 不含税价 × (1 + 13%)

不含税价 = 含税价 / 1.13

例:含税价113元 → 不含税价100元 → 税额13元

个人所得税(速算扣除法)

应纳税所得额 = 年收入 - 60000 - 专项扣除 - 专项附加扣除

累进税率表(2026年仍适用):

不超过36000元:3%

36000~144000:10%,速算扣除数2520

144000~300000:20%,速算扣除数16920

300000~420000:25%,速算扣除数31920

…以此类推

速算扣除法的本质:用一个公式代替逐级计算

Python 代码:个税计算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def calc_income_tax(annual_income, deductions=60000):
"""计算个人所得税(年度)
deductions: 起征点+专项扣除等合计
"""
taxable = max(0, annual_income - deductions)
brackets = [
(36000, 0.03, 0),
(144000, 0.10, 2520),
(300000, 0.20, 16920),
(420000, 0.25, 31920),
(660000, 0.30, 52920),
(960000, 0.35, 85920),
(float('inf'), 0.45, 181920),
]
for limit, rate, quick_deduct in brackets:
if taxable <= limit:
return taxable * rate - quick_deduct
return 0

# 示例:年收入30万,只算起征点
tax = calc_income_tax(300000)
print(f"年收入30万,个税约 {tax:.0f} 元")
# 年收入30万,个税约 31080 元

五、增长率

基本公式

增长率 = (新值 - 旧值) / 旧值 × 100%

也可以写成:增长率 = 新值/旧值 - 1

同比 vs 环比

同比:跟去年同期比(Year-over-Year, YoY)

例:2026年3月 vs 2025年3月

消除季节性因素影响

环比:跟上一个周期比(Month-over-Month, MoM)

例:2026年3月 vs 2026年2月

看短期趋势

工作场景

QPS增长率预测扩容

如果QPS每月环比增长15%,当前5000

6个月后:5000 × 1.15^6 ≈ 11565

需要提前准备至少2倍的容量

错误率变化趋势

错误率从0.01%涨到0.05%

绝对值看很小(0.04个百分点)

相对值看涨了400%——这是大事

DAU/MAU 比例

DAU/MAU 反映用户粘性

社交App一般 > 50%

工具App可能只有 10-20%

六、复合增长与复利

直觉理解

复利就是”利滚利”——利息产生利息

爱因斯坦(据传):复利是世界第八大奇迹

关键思维:线性增长很慢,指数增长很快

复利公式

A = P × (1 + r)^n

A = 终值(最终金额)

P = 本金(初始金额)

r = 每期利率

n = 期数

72法则

翻倍时间 ≈ 72 / 年利率%

年利率6%,翻倍大约需要 72/6 = 12年

年利率8%,翻倍大约需要 72/8 = 9年

年利率3%(通胀),购买力减半 ≈ 72/3 = 24年

为什么是72?因为 ln(2) ≈ 0.693,72是0.72的近似且因数多容易口算

连续复利(进阶)

当复利的计息频率趋向无穷大时

A = P × e^(r×t)

e ≈ 2.71828… 是自然常数

这就是为什么 e 这么重要——它是连续增长的极限

Python 代码:复利计算器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def compound_interest(principal, rate, years, compounds_per_year=1):
"""复利计算
principal: 本金
rate: 年利率(如0.06表示6%)
years: 年数
compounds_per_year: 每年复利次数(1=年复利,12=月复利,365=日复利)
"""
n = compounds_per_year
amount = principal * (1 + rate / n) ** (n * years)
return amount

# 10万元,年利率6%,投30年
result = compound_interest(100000, 0.06, 30)
print(f"年复利: {result:,.0f} 元") # 574,349 元

result_monthly = compound_interest(100000, 0.06, 30, 12)
print(f"月复利: {result_monthly:,.0f} 元") # 602,258 元

# 72法则验证
for rate_pct in [3, 6, 8, 12]:
rule72 = 72 / rate_pct
# 精确计算
import math
exact = math.log(2) / math.log(1 + rate_pct/100)
print(f"利率{rate_pct}%: 72法则≈{rule72:.1f}年, 精确={exact:.1f}年")

七、生活应用

房贷月供计算(等额本息)

公式:M = P × r(1+r)^n / ((1+r)^n - 1)

M = 每月还款额

P = 贷款总额

r = 月利率(年利率/12)

n = 总还款月数

例:贷款100万,年利率4.2%,30年

r = 0.042/12 = 0.0035

n = 360

M = 1000000 × 0.0035 × 1.0035^360 / (1.0035^360 - 1) ≈ 4892元

总还款 ≈ 4892 × 360 ≈ 176万

利息 = 176万 - 100万 = 76万(利息比本金少但也很多了)

30年房贷为什么利息这么多?

因为前期还的大部分是利息

第一个月:利息 = 100万 × 0.0035 = 3500元

也就是说月供4892中只有1392元还本金

Python 代码:房贷月供计算器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
def mortgage_equal_payment(principal, annual_rate, years):
"""等额本息月供计算"""
r = annual_rate / 12
n = years * 12
if r == 0:
return principal / n
monthly = principal * r * (1 + r)**n / ((1 + r)**n - 1)
total = monthly * n
interest = total - principal
return {
'monthly': round(monthly, 2),
'total': round(total, 2),
'interest': round(interest, 2),
}

def mortgage_equal_principal(principal, annual_rate, years):
"""等额本金月供计算(首月最高,逐月递减)"""
r = annual_rate / 12
n = years * 12
principal_per_month = principal / n
schedule = []
remaining = principal
for i in range(n):
interest = remaining * r
payment = principal_per_month + interest
remaining -= principal_per_month
schedule.append(round(payment, 2))
return {
'first_month': schedule[0],
'last_month': schedule[-1],
'total': round(sum(schedule), 2),
'interest': round(sum(schedule) - principal, 2),
}

# 贷款100万,年利率4.2%,30年
eq_pay = mortgage_equal_payment(1000000, 0.042, 30)
eq_pri = mortgage_equal_principal(1000000, 0.042, 30)

print("=== 等额本息 ===")
print(f"月供: {eq_pay['monthly']:,.2f} 元")
print(f"总还款: {eq_pay['total']:,.2f} 元")
print(f"总利息: {eq_pay['interest']:,.2f} 元")

print("\n=== 等额本金 ===")
print(f"首月: {eq_pri['first_month']:,.2f} 元")
print(f"末月: {eq_pri['last_month']:,.2f} 元")
print(f"总还款: {eq_pri['total']:,.2f} 元")
print(f"总利息: {eq_pri['interest']:,.2f} 元")

投资复利

每月定投1000元,年化8%,坚持30年

总投入 = 1000 × 360 = 36万

最终金额 ≈ 150万(复利的力量)

通胀侵蚀:3%通胀下,24年后你的钱购买力减半

工资谈判

年薪30万和年薪28万+每年涨薪8%

第1年:30万 vs 28万,选30万

第5年:30万 vs 28×1.08^4 = 38.1万

长期看,增长率比起步价重要

八、工作应用

QPS增长率预测扩容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def predict_growth(current_value, monthly_growth_rate, months):
"""预测未来值"""
predictions = []
value = current_value
for m in range(1, months + 1):
value *= (1 + monthly_growth_rate)
predictions.append((m, round(value)))
return predictions

# 当前QPS=5000,月增长15%
preds = predict_growth(5000, 0.15, 12)
for month, qps in preds:
bar = '█' * (qps // 500)
print(f"第{month:2d}月: QPS={qps:>8,} {bar}")

错误率变化趋势监控

绝对值思维:从0.01%到0.05%,好像没事

相对值思维:涨了400%,警报!

两种都要看,但相对值更能反映趋势

DAU/MAU比例分析

DAU/MAU > 0.5:高粘性产品(微信、抖音)

DAU/MAU 0.2-0.5:中等粘性

DAU/MAU < 0.2:低频使用(携程、12306)

九、增长率可视化

Python 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS']
matplotlib.rcParams['axes.unicode_minus'] = False

months = list(range(0, 25))

# 不同增长率对比
rates = {'5%月增长': 0.05, '10%月增长': 0.10, '15%月增长': 0.15, '20%月增长': 0.20}
base = 1000

plt.figure(figsize=(10, 6))
for label, rate in rates.items():
values = [base * (1 + rate)**m for m in months]
plt.plot(months, values, label=label, linewidth=2)

# 线性增长对比
linear = [base + base * 0.15 * m for m in months]
plt.plot(months, linear, '--', label='线性增长(参考)', color='gray')

plt.xlabel('月份')
plt.ylabel('值')
plt.title('指数增长 vs 线性增长')
plt.legend()
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('growth_comparison.png', dpi=150)
plt.show()

十、常见误区

误区1:百分点和百分比混淆

从10%涨到15%,涨了”5%”——这句话有歧义

严谨说法:涨了5个百分点 / 涨了50%

写报告时一定要说清楚

误区2:基数效应

去年收入100万,今年200万,增长100%

明年如果还是200万,增长0%

“去年增长100%,今年增长0%”——看起来像急剧恶化,实际是稳定

反过来:去年从100跌到50(-50%),今年从50回到100(+100%)

跌50%和涨100%才能回到原点——下跌比上涨容易

误区3:平均增长率不能简单平均

第一年涨50%,第二年跌50%

简单平均:(50% + (-50%)) / 2 = 0%,好像没变

实际:100 × 1.5 × 0.5 = 75,亏了25%

正确方法用几何平均:(1.5 × 0.5)^(1/2) - 1 = -13.4%

误区4:百分比不能直接加

A商品涨价10%,B商品涨价20%

不能说”平均涨价15%”,除非两个商品权重一样

需要加权平均

练习题

题1:折扣陷阱

某商品先涨价30%,再打7折,最终价格是原价的百分之多少?

答案:× 1.3 × 0.7 = × 0.91,即原价的91%,降了9%

题2:增长率

某服务器QPS今年1月是2000,每月环比增长10%

问:6月份QPS大约多少?年底12月呢?

6月(过了5个月):2000 × 1.1^5 ≈ 3221

12月(过了11个月):2000 × 1.1^11 ≈ 5706

题3:百分点 vs 百分比

系统可用性从99.9%提升到99.99%

问:提升了多少个百分点?提升了百分之多少?

提升了 0.09个百分点

百分比提升:0.09% / (100% - 99.9%) × 100% … 不对

换个角度:故障率从0.1%降到0.01%,降低了0.09个百分点,降低了90%

这就是”几个9”的代价——每多一个9难度指数级增长

题4:复利

小明25岁开始每年存1万元,年化收益6%,到55岁时有多少钱?

这是年金终值问题

FV = PMT × ((1+r)^n - 1) / r

FV = 10000 × (1.06^30 - 1) / 0.06

FV = 10000 × (5.7435 - 1) / 0.06

FV = 10000 × 79.06 ≈ 790,582元

总投入30万,收益约49万——时间是复利最好的朋友

题5:房贷对比

贷款80万,年利率4.5%,20年

计算等额本息和等额本金的总利息差多少?

等额本息月供 ≈ 5059元,总还款 ≈ 121.4万,利息 ≈ 41.4万

等额本金总利息 ≈ 36.15万

差额约5.25万

等额本金前期压力大但总利息少

本章小结

比和比例:比是关系,比例是两个比相等,正比例反比例

百分比:以100为分母的分数,方便直觉理解

百分点 vs 百分比:绝对差 vs 相对变化,汇报时要说清楚

折扣陷阱:先涨后折可能更贵,乘法不能拆开看

增长率:同比消除季节性,环比看短期趋势

复利:A = P(1+r)^n,72法则速估翻倍时间

核心认知:指数增长很反直觉,人脑天然线性思维

下一章 → 04-数感与估算


上一章 目录 下一章
02-幂根号与指数 数学重学路线图 04-数感与估算