1. 先抛问题
“老师,0.999… 真的等于 1 吗?它明明差一点啊!”
如果你教过小数,这句话一定听过。今天不给“极限”大道理,只用小学分数 + 10 行 Python,让学生自己点“运行”后惊呼:哇,真的是 1!
2. 直觉冲突:画两条数轴
数轴 A:0.9 0.99 0.999 0.9999 …
数轴 B:1问:A 和 B 之间还能不能再塞一个数?
让学生随便说一个数,比如 0.9999…5,马上追问“这个 5 写在哪一位?”——发现永远写不出,因为 0.999… 的 9 没有“最后一位”。
结论:如果两个数中间塞不进第三个数,它们就相等。
3. 分数法:一眼看穿
把 0.333… 写成 1/3,两边同 ×3:
0.333…×3 = 0.999… = 1/3×3 = 1
Q.E.D.——但学生总觉“取巧”,那就上代码!
4. 10 行 Python 实验(拷贝即跑)
0.999… = 1 ? 让计算机算给我们看!
n = 0 # 累加器
for i in range(1, 21): # 做 20 次
n += 9 / (10 ** i) # 每次加一个 9×10^(-i)
print(f”第{i}次:0.{i*’9′} = {n:.15f}”)
print(“\n用 1 – 上面结果:”)
print(“1 – 0.999…20位 =”, 1 – n)
print(“看出来了吗?差值已经小到 10^-20,电脑都分不清啦!”)
运行截图(本地 Jupyter):
第1次:0.9 = 0.900000000000000
第2次:0.99 = 0.990000000000000
…
第20次:0.99999999999999999999 = 0.99999999999999999999
1 – 0.999…20位 = 1.0000000000000000e-20
5. 用“等比数列”再补一刀(可选拓展)
首项 a=0.9,公比 r=0.1,前 n 项和:
S = a(1 – rⁿ)/(1 – r)
当 n→∞ 时 rⁿ→0,于是 S→0.9/(1-0.1)=1
把公式也写进代码,一行就行:
print(“等比极限和 =”, 0.9 / (1 – 0.1))
输出:1.0——数学、程序、直觉三合一。
6. 课堂 5 分钟小活动
- 让学生改代码,把 9 换成 3,验证 0.333…→1/3
- 再换成 1,验证 0.111…→1/9
- 挑战:写出 0.142857142857… 的分数(提示:1÷7)
7. 总结金句(直接抄黑板)
“当 9 无限延续时,‘差一点’就变成了‘完全一样’。电脑算不尽的是小数,算得尽的是真理——0.999… 就是 1!”

