跳过并跳转到主要内容
拾数记

有理数的边界:所有循环与有限小数的分数化证明

从小数的展开形式探寻有理数的底层本质。本文利用十进制位值原理与构造代数消元法(错位相减),严格证明为什么有限小数和无限循环小数必然能写成分数,并提供手把手案例拆解。

证明 2 分钟阅读
巴克沙利手稿之一
巴克沙利手稿之一

在数学的世界里,有一个非常奇妙的现象:有些数字虽然顶着一条 “无限长” 的尾巴(比如 0.33330.3333\cdots),但只要给它施加一个简单的代数魔术,它就能瞬间收敛,变成一个干脆利落的分数(13\frac{1}{3})。

相反,像圆周率 π\pi3.14159263.1415926\cdots)这样同样无限长的数字,却无论如何也写不成两个整数相除的形式。

这到底是为什么?有限小数和循环小数究竟凭什么能变成分数?今天我们就来拆解这个数学魔术背后的 “潜规则”。

有限小数是指小数点后数字个数是有限的。

任何一个有限小数,本质上都是把一个整数除以了 10 的若干次方。既然能数得清有几位,我们就可以利用 10, 100, 1000 这样的分母,直接把它变成两个整数相除的形式。

  • 两位小数0.75=751000.75 = \frac{75}{100},分子分母同时约分,就得到了 34\frac{3}{4}
  • 四位小数3.1415=31415100003.1415 = \frac{31415}{10000},分子分母同时除以 55 约分后,等于 62832000\frac{6283}{2000}

底层逻辑:只要小数位数有限(假设有 nn 位),它就一定能写成:

整数10n\frac{\text{整数}}{10^n}

因为分子和分母都是整数,这完全符合分数的定义。

设有限小数 xx 的形式为:

x=a.a1a2a3anx = a.a_1a_2a_3\cdots a_n

其中 aa 是整数部分,a1,a2,,ana_1, a_2, \cdots, a_n 是小数点后的每一位数字(0ai90 \le a_i \le 9)。

根据地方位值原理,我们可以将 xx 整体乘以 10n10^n

10nx=aa1a2a3an10^n \cdot x = a a_1a_2a_3\cdots a_n

此时,等式右边已经变成了一个完全的整数。我们令这个整数为 pp,即:

p=aa1a2a3an(pZ)p = a a_1a_2a_3\cdots a_n \quad (p \in \mathbb{Z})

同时,令分母 q=10nq = 10^n。因为 nn 是正整数,所以 qq 也是一个整数q0q \neq 0

两边同除以 10n10^n 得到:

x=pqx = \frac{p}{q}

结论: 任意有限小数都可以写成两个整数相除的形式,因此有限小数必能写成分数。

无限循环小数是指小数点后从某一位起,一个或几个数字依次不断重复出现。

面对无限循环小数(比如 0.1212120.121212\cdots),我们数不清它有多少位。但它们有一个致命的弱点:数字在按规矩、无限重复。

数学家想出了一个极其聪明的代数技巧 —— 错位相减法,只要把这个无限长的尾巴对齐,“咔嚓” 一剪,它就现出了分数的原形。

  1. 设个代号:令 x=0.333x = 0.333\cdots
  2. 扩大十倍:因为循环节只有 1 位(就是 3),我们把等式两边同时乘以 10,让小数点往后跳一位: 10x=3.33310x = 3.333\cdots
  3. 两式相减:用大的一边减去小的一边,列出竖式: 10x=3.333x=0.3339x=3\begin{aligned} 10x &= 3.333\cdots \\ -\quad x &= 0.333\cdots \\ \hline 9x &= 3 \end{aligned} (看!小数点后面那条无限长的 .333.333\cdots 尾巴,在相减的瞬间被完全蒸发了!)
  4. 大功告成:解出 x=39x = \frac{3}{9},也就是 13\frac{1}{3}

如果循环节是两位(12),那就同时乘以 100(即 10210^2)来对齐尾巴:

  1. x=0.121212x = 0.121212\cdots
  2. 乘以 100 得到100x=12.121212100x = 12.121212\cdots
  3. 两式相减100xx=12.1212120.121212100x - x = 12.121212\cdots - 0.121212\cdots 99x=1299x = 12
  4. 最终化简x=1299=433x = \frac{12}{99} = \frac{4}{33}

如果小数点后面先有一段 “不听话” 的乱码,后面才开始循环,办法也很简单:先乘以 10 的幂次,把不循环的数字硬生生 “拽” 到小数点前面去,让它变成纯循环小数。

  1. x=0.1666x = 0.1666\cdots
  2. 第一步(揪出乱码):乘以 10,把不循环的 “1” 挪到前面: 10x=1.66610x = 1.666\cdots
  3. 第二步(对齐循环):因为循环节 “6” 只有 1 位,再乘以 10(即原式的 100 倍): 100x=16.666100x = 16.666\cdots
  4. 第三步(相减消尾):用第 3 步减去第 2 步: 100x10x=(16.666)(1.666)100x - 10x = (16.666\cdots) - (1.666\cdots) 90x=1590x = 15
  5. 第四步(变身分数)x=1590x = \frac{15}{90},约分后就是 16\frac{1}{6}

设一个纯循环小数 xx 为:

x=0.c˙1c2c˙Tx = 0.\dot{c}_1c_2\cdots\dot{c}_T

其中 c1c2cTc_1c_2\cdots c_T 构成了长度为 TT 的循环节。展开写即为:

x=0.c1c2cTc1c2cT—— (方程 1)x = 0.c_1c_2\cdots c_T c_1c_2\cdots c_T \cdots \quad \text{—— (方程 1)}

现在,我们将 xx 整体乘以 10T10^T,使小数点向右移动一个完整的循环节长度:

10Tx=c1c2cT.c1c2cTc1c2cT—— (方程 2)10^T \cdot x = c_1c_2\cdots c_T . c_1c_2\cdots c_T c_1c_2\cdots c_T \cdots \quad \text{—— (方程 2)}

观察发现,方程 1方程 2 的小数点后无限循环的部分是完全一模一样的。

此时,用 方程 2 减去 方程 1

(10Tx)x=(c1c2cT.c1c2cT)(0.c1c2cT)(10^T \cdot x) - x = (c_1c_2\cdots c_T . c_1c_2\cdots c_T \cdots) - (0.c_1c_2\cdots c_T \cdots)

由于小数点后的无限循环部分完全相减归零,等式右边只剩下一个整数:

(10T1)x=c1c2cT(10^T - 1)x = c_1c_2\cdots c_T

解这个关于 xx 的一元一次方程得到:

x=c1c2cT10T1x = \frac{c_1c_2\cdots c_T}{10^T - 1}

因为分子 c1c2cTc_1c_2\cdots c_T 是一个整数,分母 10T110^T - 1 也是一个非零整数,所以 xx 成功表示为了分数形式。

混循环小数的补充说明: 如果是混循环小数(如 0.123˙4˙0.12\dot{3}\dot{4}),可以先乘以 10k10^kkk 为非循环部分的位数)将其小数点右移,化为“整数 + 纯循环小数”的形式,再套用上述方法,最终同样能通分化为分数。

结论: 任意无限循环小数都可以通过构造方程消去循环部分,进而写成分数。

通过上述两个严格的代数推导与案例演练,我们证明了所有有限小数与无限循环小数都可以写成分数

这也是为什么在数集分类中,这两类小数被归为“有理数(Rational Number,字面意思即成比例的数)”的原因。而那些无法写成分数的数(如 π\pi2\sqrt{2}),则必然是无限不循环小数,即“无理数”。下一次当你在屏幕上看到一串永远走不到头的循环数字时,不要被它的“无限”吓倒——在分数的精密结构里,它其实早就拥有了一个固定且安稳的归宿。

© 2026 五五开 · 一方通行,只管向前。

旅途由 Astro 驱动 · 主题 Chirping Astro