循环小数化分数

一、问题提出

我在教学的时候有时会给成绩比较好的小学生和初中生补充一个知识点:循环小数化分数的问题。
人教版小学五年级下册课本会讲到小数和分数的互相转化,但是课本内仅仅涉及到利用分数与除法的关系把分数化为小数,以及把有限小数化为以 $10$ 的 $n$ 次方为分母的分数。
于是由此可提出两个问题:

  1. 如何把无限循环小数化为分数?
  2. 为什么所有的分数都可以化为有限小数或无限循环小数?

本文我们重点讨论第一个问题的做法,也就是把无限小数化为分数的问题。此问题偶尔会出现在小学奥数拓展部分,此外经常会出现在初中生具体学习了一元一次方程之后的思考题或材料题。下面我们介绍一下这类题目的在中小学的解决方法。

二、具体方法

把循环小数化为分数,通常有两种方法:一种是代数方程法,另一种是口诀/公式法
以下是详细步骤:

方法一:代数方程法

这种方法的核心思想是通过移位相减,把无限循环的部分“抵消”掉。

1. 纯循环小数

  • 例1:把 $0.\dot{3}$ 化为分数
  1. 设未知数:
    令 $x = 0.3333…$
  2. 移动小数点:
    看循环节有几位,就乘以 $10$ 的几次方。这里循环节是 $3$(1位),所以乘以 $10$:
    $10x = 3.3333…$
  3. 相减消去循环部分:
    用下式减上式:
    $$
    \begin{aligned}
    10x &= 3.3333… \cr
    -\quad x &= 0.3333… \cr
    \hline
    9x &= 3
    \end{aligned}
    $$
  4. 求解并约分:
    $x = \frac{3}{9}$
    约分后得:$x = \frac{1}{3}$
  • 例2:把 $0.\dot{1}\dot{2}$ 化为分数
  1. 设未知数:
    令 $x = 0.1212…$
  2. 移动小数点:
    这里循环节是 $12$(2位),所以乘以 $100$:
    $100x = 12.1212…$
  3. 相减消去循环部分:
    用下式减上式:
    $$
    \begin{array}{rcl}
    100x &=& 12.1212… \cr
    -x &=& 0.1212… \cr
    \hline
    99x &=& 12
    \end{array}
    $$
  4. 求解并约分:
    $x = \frac{12}{99}$
    约分后得:$x = \frac{4}{33}$

2. 混循环小数

例1:把 $0.1\dot{6}$ (即 $0.1666…$) 化为分数

  1. 设未知数:
    令 $x = 0.1666…$
  2. 移动小数点:
    先乘以 $10$,让非循环的 $1$ 跑到小数点左边:
    $10x = 1.6666…$ — (式A)
  3. 再次移动小数点:
    由于此时直接使用 $10x-x$ 无法消去循环节,于是此处再乘以 $10$(或者直接用原式乘以 $100$),让第一个循环的 $6$ 也跑到小数点左边:
    $100x = 16.6666…$ — (式B)
  4. 相减:
    此时用 (式B) 减去 (式A),这样小数点后的 $.666…$ 就完全对齐抵消了:
    $$
    \begin{array}{rcl}
    100x &=& 16.666… \cr
    -10x &=& 1.666… \cr
    \hline
    90x &=& 15
    \end{array}
    $$
  5. 求解并约分:
    $x = \frac{15}{90}$
    约分(分子分母同除以15)得:$x = \frac{1}{6}$
    例2:把 $0.1\dot{2}\dot{3}$ 化为分数
  6. 设未知数:
    令 $x = 0.12323…$
  7. 移动小数点:
    先乘以 $10$,让非循环的 $1$ 跑到小数点左边:
    $10x = 1.2323…$ — (式A)
  8. 再次移动小数点:
    此时需要用原式乘以 $1000$,让第一个循环的 $23$ 也跑到小数点左边:
    $1000x = 123.2323…$ — (式B)
  9. 相减:
    用 (式B) 减去 (式A),这样小数点后的 $.2323…$ 就完全对齐抵消了:
    $$
    \begin{array}{rcl}
    1000x &=& 123.2323… \cr
    -10x &=& 1.2323… \cr
    \hline
    990x &=& 122
    \end{array}
    $$
  10. 求解并约分:
    $x = \frac{122}{990}$
    约分(分子分母同除以2)得:$x = \frac{61}{495}$

方法总结

该方法的核心,就是通过将循环小数乘以 $10$ 的 $n$ 次方,构造出可以把循环小数部分减去的形式,从而得到整数有关的一元一次方程。
由方法一:我们可以自然地总结出方法二。

方法二:口诀公式法

此方法为所谓的秒杀法,其原理完全基于方法一,适用于考试做选择填空题,如果想快速得出结果,可以记住以下规律:

分母的规律:

  • 循环节有几位,分母就写几个 9。
  • 不循环的小数部分有几位,分母后面就添几个 0。

[!NOTE]

  • 以上两步均基于方法一得到,
    • 如 $0.\dot{3}$ 循环节有一位,则写一个 $9$ ,实质上是 $9=10-1$;
    • $0.1\dot{6}$ 循环节有一位,则写一个 $9$,不循环的小数部分有一位,则写一个 $0$ 得到 $90$,实质上是 $90=100-10$ 。

分子的规律:

  • 分子 = (整个小数部分的数字) - (不循环部分的数字)

实战演练:

例1:$0.\dot{4}\dot{5}$ (纯循环)

  • 分母: 循环节是 $45$ (2位),所以写两个 $9$ $\rightarrow$ 99
  • 分子: 整个数是 $45$,不循环部分是 $0$ $\rightarrow$ $45 - 0 = 45$
  • 结果: $\frac{45}{99}$
  • 约分: 上下除以 $9$ $\rightarrow$ $\frac{5}{11}$
    例2:$0.4\dot{5}$ (混循环)
  • 分母: 循环节是 $5$ (1位) $\rightarrow$ 写一个 $9$;不循环小数是 $4$ (1位) $\rightarrow$ 写一个 $0$。分母是 90
  • 分子: 整个小数数字是 $45$,不循环数字是 $4$。分子是 $45 - 4 = 41$。
  • 结果: $\frac{41}{90}$ (无法约分)

总结

  1. 确定分母: 几个循环写几个9,几个不循环写几个0。
  2. 确定分子: 全部数字减去不循环的数字。

以上两种方法可以作为小学高年级和初中生的延伸内容讲解,同时也引出了下面一个重要的问题。

三、争议

近年来互联网上有一个很有名的争论:$0.\dot{9}=1$ 吗?
很多人认为 $0.\dot{9}$ 是无限接近 $1$ 而不等于 $1$ ,这一点是非常符合大多数人的直觉的。但是在我们介绍了方法一之后,我们可以利用方法一对 $0.\dot{9}$ 进行研究:

  1. 设未知数:
    令 $x = 0.9…$
  2. 移动小数点:
    原数乘以 $10$:
    $10x = 9.9999…$
  3. 相减消去循环部分:
    用下式减上式:
    $$
    \begin{array}{rcl}
    10x &=& 9.9999… \cr
    • x &=& 0.9999… \cr
      \hline
      9x &=& 9
      \end{array}
      $$
  4. 求解并约分:
    $x = 1$
    也就是说,利用方法一,我们可以得到 $0.\dot{9}=1$ 。
    所以在数学上可以明确地说,$0.\dot{9}=1$ ,它们并不是无限接近,而是数学上的严格相等,但是这一点和很多没有了解深入了解过循环小数的人来说,这一个结论是不符合他们直觉的。换句话说,很多人认为 $0.\dot{9}=1$ 是错误的,更多是源于直觉上的不适,而非逻辑上的谬误。
    那么我们常用的方法一在数学上是否真的严谨呢?

再看方法一

事实上我们在讲解引入方法一的时候,依赖了两个未经证明的隐含假设:

  1. 假设无限小数是一个确定的“实数”:
    我们在做 $10x−x$ 之前,首先假设了 $x$ 是一个普通的实数,可以进行代数运算。如果不承认 $0.999…$ 是一个定值(而认为它是一个不断变化的过程),那么就不能对它进行代数运算。
  2. 假设我们可以对无限小数进行“逐项操作”:
    $10×0.999…=9.999…$
    这一步其实假设了:把无限长的小数点向右移一位,其“尾巴”依然和原来一样长,依然可以和原来的尾巴完全抵消。
    很多人在接触到这个方法的时候可能或多或少会思考过这两个假设。我自己在备课时察觉到了假设2的内容:当在计算过程中涉及到小数点移动的过程,如果按有限小数的逻辑,小数点的移动会造成小数位数的变化,那么在无限小数中会出现同样的情况吗?
    原来的小数点后面有无穷个 $9$ ,在小数点向右移动一位之后,小数点后 $9$ 的位数是不是变成了无穷减一个 $9$ ?如果小数点后面的位数不同,那么 $10x−x$ 就无法消去小数点后的循环部分。
    所以我们需要在此讲清楚什么是无穷。

关于无穷

在标准的实数系 $\mathbb{R}$ 下,无穷大并不是一个实数。我们在初中引入了数轴的概念,数轴上的任意一个点和实数系 $\mathbb{R}$ 中的任意一个实数都是一一对应的。然而,无穷大在数轴上无法找到具体对应的点。如果非要在数轴上描述无穷大,它更像是数轴右端的那个箭头,代表着实数轴延伸的方向
当然,数学家是可以定义新规则的。例如在康托尔提出的集合论,还有可数无穷和不可数无穷这样对无穷概念的延伸。不过鉴于篇幅且与本文探讨的核心问题关系不大,在此不作展开。
在实数系 $\mathbb{R}$ 的讨论框架下,我们应当把无穷看作一种趋势。在这种视角下,$\infty$ 和 $\infty - 1$ 描述的是同一种发散的趋势。因此,我们不应问“无穷大加 1 等于几”,而应思考“当一个量无限增加时,它表现出怎样的性态”。
理清了无穷在实数系 $\mathbb{R}$ 下的含义,我们再来进一步讨论这个问题。

正确的逻辑

对于无限循环小数 $0.\dot{9}$ ,在小学和中学阶段,我们把它视作一个“写不完的数”;但在高等数学中,它被严格定义为一个无穷级数的极限。
即:
$x = 0.9999… = \frac{9}{10} + \frac{9}{100} + \frac{9}{1000} + \dots$
高中生应该可以发现,这是一个首项 $a_1 = \frac{9}{10}$,公比 $q = \frac{1}{10}$ 的无穷等比数列求和的过程。根据等比数列前 $n$ 项和公式,我们可以算出:
$$
S_n = \frac{a_1(1 - q^n)}{1 - q} \
= \frac{0.9 \times (1 - 0.1^n)}{1 - 0.1} \
= \frac{0.9 \times (1 - 0.1^n)}{0.9} \
= 1 - 0.1^n
$$
对此结果,我们通过极限进行计算:

  1. 求 $n \to \infty$ 时的极限:
    $$\lim_{n \to \infty} S_n = \lim_{n \to \infty} (1 - 0.1^n)$$
  2. 分析 $0.1^n$ 的极限:
    因为底数 $0.1$ 介于 -1 和 1 之间,随着指数 $n$ 的增大,$0.1^n$ 会无限趋近于 0。
    即:$\lim_{n \to \infty} 0.1^n = 0$
  3. 计算结果:
    $$\lim_{n \to \infty} S_n = 1 - 0 = 1$$
    我们甚至可以更进一步。根据高等数学中的级数理论,对于一个无穷等比数列,其收敛的充要条件是公比 $q$ 的绝对值小于 1。因此,我们可以直接使用无穷等比数列求和公式
    $$
    S = \frac{a_1}{1-q}=\frac{0.9}{1 - 0.1} = \frac{0.9}{0.9} = 1
    $$
    也就是说,不论是从数列极限的方法,还是级数收敛的方法,我们都可以证明:只要在实数系 $\mathbb{R}$ 的框架下讨论,$0.\dot{9}=1$ 是严格成立的。

为什么方法一是严谨的?

在高等数学中,上面提到的方法一即“代数方程法”其实就是无穷等比数列求和的一种简化推导形式。
下面我从高等数学的角度拆解一下这个方法到底严谨在哪里。
我们以方法一下的例1为例,步骤如下

  1. 令 $x = 0.333…$
  2. $10x = 3.333…$
  3. $10x - x = 3$
    在高数中,这个操作利用了极限的线性运算性质级数的移位性质
  • 步骤1的本质:在小学和中学阶段,我们默认 $x$ 是一个确定的实数,而在高等数学中,由于公比 $q=1/10<1$ ,该无穷等比级数必然收敛,因此 $x$ 确实代表一个确定的实数,这就为后续的代数运算提供了合法性基础。
  • 步骤2的本质
    $$ 10x = 10 \times (\frac{3}{10} + \frac{3}{100} + \dots) = 3 + \frac{3}{10} + \frac{3}{100} + \dots $$
    这里用到了极限的线性性质:
    • 如果数列 $A$ 收敛于 $a$,那么$k \cdot A$ 收敛于 $k \cdot a$,即收敛级数乘以常数仍然收敛。
  • 步骤3的本质
    $$ 10x - x = (3 + \frac{3}{10} + \dots) - (\frac{3}{10} + \frac{3}{100} + \dots) $$
    由于两个级数都绝对收敛,我们可以重排项并逐项相减。尾部的无穷项完全抵消。
    所以,方法一在本质上是在不直接写出求和公式的情况下,利用级数的性质解出了和

四、学生较真怎么办

本文实际上还是一篇教学思考分享,而非高等数学概念科普,毕竟相关的内容互联网上到处都是,我自己的高等数学知识也确实有限,本文在写作过程中也借助了一些AI工具的帮助。
本文的最后还是聊一聊在实际教学中如果讲到知识点可能会遇到的问题。
实际上学生在接收这个方法时往往不会对 $10x$ 进行小数点移动产生疑问,毕竟学生自然会默认无限循环小数的小数点移动规则与其他小数一致。
最大的问题我觉得就是上面所说,学生搞不清小数点后的有限与无限。一些思维活跃的学生会问:“老师,10x 减去 x,小数点后面真的减干净了吗?难道不会剩下一位吗?”
对于小学与中学学生,此处必须明确:循环小数是无限的,所以后面永远是对齐的,所以直接相减是可以减干净的。