0.999…

0.999…，也可写作$0.\overline{9}$、$0.\dot{9}$或是$0.(9)$，是一个具有特殊意义的无限循环小数，由小数点后无限的 9 序列组成。在数学的完备实数系中，“0.999…”所表示的数与“1”相同。换句话说，“0.999...”不是“几乎完全”或“非常、非常接近但不完全”等于1；相反，“0.999...”和“1”正好代表相同的数字。

有很多方法可以证明这种等式，从直觉的论证到严谨的数学证明。所使用的技术取决于目标受众、背景假设、历史背景和实数概念的发展，因为通常是在实数系统中定义 0.999...。在其他系统中，0.999... 可以具有相同的含义、不同的定义或未定义。

一般地说，每个非零有限小数都有两个相等的表示形式（例如，8.32 和 8.31999...），这是所有位置数字系统表示形式的属性，无论基数如何。对有限小数十进制表示形式的功利主义偏好导致了一种误解，认为它是唯一的表示形式。由于这个原因和其他原因（例如依赖于非基本技术、属性或学科的严格证明），有些人可能会发现等式足够违反直觉，从而质疑或拒绝它，而这一直是数学教育中多项研究的主题。

## 简介

0.999…是书写于小数记数系统中的一个数，读作：“零点九，九循环”。一些最简单的0.999… = 1 的证明都依赖于这个系统方便的算术性质。大多数的小数算术──加法、减法、乘法、除法，以及大小的比较，使用与整数差不多的数位层次的操作。与整数一样，任何两个有限小数只要数位不同，那么数值也一定不同。相对的，任何一个形如0.99…9的数，但是9的数量有限，则这个数字是小于1的。

这类展开式的非唯一性不仅限于十进制系统，相同的现象也出现在其它的整数进位制中。数学家们也列举出了一些1在非整数进位制中的写法，这种现象也不是仅仅限于1的：对于每一个非零的有限小数，都存在另一种含有无穷多个9的写法，由于简便的原因，这时几乎肯定使用有限小数的写法，这样就更加使人们误以为没有其它写法了，实际上，一旦在完备实数系中允许使用无限小数，那么在所有的进位制中都有无穷多种替代的写法，例如，18.3287与18.3286999…、18.3287000…，以及许多其它的写法，都表示相同的数，这些各种各样的等式被用来更好地理解分数的小数展开式的规律，以及一个简单分形图形──康托尔集合的结构，它们也出现在一个对整个实数的无穷集合的经典研究之中。

在过去数十年里，许多数学教育的研究人员研究了大众及学生们对该等式的接受程度，许多学生在学习开始时怀疑甚至拒绝该等式，但许多学生被老师、教科书和如下章节的算术推论说服并接受两者是相等的。尽管如此，许多人们仍常感到怀疑，及提出进一步的辩解，这经常是由于存在不少对数学实数的错误观念等背后因素（参见以下教育中遇到的怀疑一章节），例如认为每一个实数都有唯一的一个小数展开式，以及认为无限小（无穷小）不等于0，并且将0.999…视为一个不定值，即该值只是一直微微扩张变大，因此与1的差永远是无限小而不是0，因此“永远都差一点”。可以构造出符合这些直观的数系，但这个观念只能用于初等数学或多数更高等数学中的标准实数系统之外进行，的确，某些设计含有“恰恰小于1”的数，不过，这些数一般与0.999…无关（因为与之相关的理论上和实践上都皆无实质用途），但在数学分析中引起了相当大的关注。

误解0.999…中的省略号的意义，是误解0.999…= 1的其中一个原因。这里省略号的用法与日常语言中0.99…9的用法是不同的，0.99…9中的省略号意味着的有限的部分被省略掉了。但是，当用来表示一个循环小数的时候，"…"则意味着无限的部分被省略掉了，这只能用极限的数学概念来阐释。作为使用传统数学的结果，指派给记数表示式“0.999…”的值定义为一个实数，该实数为收敛数列（0.9，0.99，0.999，0.9999，0.99999，…）的极限。“0.999…”是一个数列的极限，从而，对于0.999…= 1这个等式就很直观了。

与整数和有限小数的情况不一样，其实记数法也可以用多种方式表示单一个数值。例如，如果使用分数。但是，一个数最多只能用两种无限小数的方法来表示。如果有两种方法，那么其中一种一定是从某一位开始全是循环重复的9，而另外一种则是从某一位开始就全是循环重复的0。

0.999… = 1 有许多证明，它们各有不同的严谨性，一个严谨的证明可以简单地说明：考虑到两个实数其实是同一个的，当且仅当它们的差等于零。大部分人都同意；0.999…与 1 的差，就算存在也是非常的小(实际上根本不存在，即差等于0)。考虑到以上的收敛数列，这时可以证明这个差的大小一定是小于任何一个正数的，也可以证明（详细内容参见阿基米德性质），唯一具有这个性质的实数是0。由于差是0，可知 1 和 0.999…是同一数，用相同的理由，也可以解释为什么“0.333…=1/3”；以及该等式乘上3倍后可得出“0.999… = 1”。

## 证明

### 对位相减

在不考虑柯西序列的情况下：1.00000…−0.99999…这个结果为0.000…，也就是后面的0无限循环。这两个数目皆可表示成无限循环小数，小数点后五位之后还会一直填上0，始终无法找到最后一位来填上1，因为如果补上1就会成为有限小数。1.000… - 0.999… = 0.000… = 0，故1 = 0.999…。

这假设了0.999…没有“最后的9”、这些无限循环小数的小数点后的位数为可列的（可以由第一个数位一个位一个位数下去而于有限次数到任一个数位）（这已得出0.999…没有“最后的9”）、1.000… - 0.999…的结果存在小数表示式。运算结果将没有“最后的1”，所以1与0.999…没有差值。

### 代数

#### 分数

无限小数是有限小数的一个必要的延伸，其中一个原因是用来表示分数。用长除法，一个像的简单整数，长除法后变成了一个循环小数0.333…，其中有无穷多个数字3。利用这个小数，很快就能得到一个 0.999… = 1 的证明。用 3 乘以 0.333… 中的每一个 3，便得到 9，所以 3 × 0.333… 等于 0.999…。由于 等于1，所以 0.999… = 1。

这个证明的另外一种形式，是用$\frac{1}{9}=0.111...$同乘以9。

$\begin{align} 0.333\cdots &{} = \frac{1}{3} \\ 3 \times 0.333\cdots &{} = 3 \times \frac{1}{3} = \frac{3 \times 1}{3} \\ 0.999\cdots &{} = 1 \end{align}$｜$\begin{align} 0.111\cdots & {} = \frac{1}{9} \\ 9 \times 0.111\cdots & {} = 9 \times \frac{1}{9} = \frac{9 \times 1}{9} \\ 0.999\cdots & {} = 1 \end{align}$

由于两个方程都是正确的，因此根据相等关系的传递性质，0.999…一定等于1。类似地，且。所以0.999…= 1。

#### 一个特别的除法竖式

用竖式计算可得 $\frac{8.999...}{9}=0.999...$

设 $n=0.999... \quad$

则

$$\begin{align} \frac{8+n}{9}&=n \\ 8+n&=9n \\ \end{align}$$

解此一元一次方程式得:

$$\begin{align} 8&=8n \\ n&=1 \\ \end{align}$$

所以 $0.999...=n=1 \quad$。

#### 位数操作

另外一种证明更加适用于其它循环小数。当一个小数乘以10时，其数字不变，但小数点向右移了一位。因此10 × 0.999…等于9.999…，它比原来的数大9。

考虑从9.999…减去0.999…。这时可以一位一位地减；在小数点后的每一位，结果都是9 - 9，也就是0。但末尾的零并不能改变一个数，所以相差精确地是9。最后一个步骤用到了代数。设0.999… = c，则10c − c = 9，也就是9c = 9。等式两端同除以9，便得证：c = 1。用一系列方程来表示，就是

<image>

$$\begin{align} c &= 0.999\ldots \\ 10 c &= 9.999\ldots \\ 10 c - c &= 9.999\ldots - 0.999\ldots \\ 9 c &= 9 \\ c &= 1 \\ 0.999\ldots &= 1 \end{align}$$

以上两个证明中的位数操作的正确性，并不需要盲目相信，也无需视为公理；它是从小数和所表示的数之间的基本关系得出的。这个关系，可以用几个等价的方法来表示，已经规定了0.999…和1都表示相同的实数。

### 实分析

#### 无穷级数和数列

对于任何一个小数，都可以定义为无穷级数的和。一般地：

$b_0 . b_1 b_2 b_3 b_4 \ldots = b_0 + b_1 ({\tfrac{1}{10}}) + b_2 ({\tfrac{1}{10}}) ^2 + b_3 ({\tfrac{1}{10}}) ^3 + b_4 ({\tfrac{1}{10}}) ^4 + \cdots$.

对于0.999…来说，这时可以使用等比级数的收敛定理：

如果$|r| < 1$，则$ar+ar^2+ar^3+\cdots = \frac{ar}{1-r}$.

由于0.999…是公比为$r=\textstyle\frac{1}{10}$的等比级数的和，应用以上定理，很快就可以得出证明了：

$0.999\ldots = 9 (\tfrac{1}{10}) + 9 ({\tfrac{1}{10}}) ^2 + 9 ({\tfrac{1}{10}}) ^3 + \cdots = \frac{9({\tfrac{1}{10}})}{1-{\tfrac{1}{10}}} = 1$。

这个证明（实际上是10等于9.999…）早在1770年就在瑞士数学家莱昂哈德·欧拉的作品《Elements of Algebra》（《代数的要素》）中出现了。

<image>

等比级数的和本身，是一个比欧拉还要早的结果。一个典型的18世纪的推导用到了逐项的操作，类似于以上的代数证明。直到1811年，Bonnycastle的教科书《An Introduction to Algebra》（《代数的介绍》）依然使用这种等比级数的方法来证明对0.999…使用的策略是正当的。在19世纪，这种在当时被以为随随便便的求和方法遭到了反对，这样便导致了现在仍然占有支配地位的定义：一个级数的和定义为数列的部分和的极限。该定理的一个对应的证明，明确地把这个数列计算出来了；这可以在任何一本以证明为基础的微积分或数学分析的教科书中找到。

对于数列（x0，x1，x2，…）来说，如果当n增大时，距离|x − xn|变得任意地小，那么这个数列就具有极限x。0.999… = 1的表述，可以用极限的概念来阐释和证明：

$0.999\ldots = \lim_{n\to\infty}0.\underbrace{ 99\ldots9 }_{n} = \lim_{n\to\infty}\sum_{k = 1}^n\frac{9}{10^k} = \lim_{n\to\infty}\left (1-\frac{1}{10^n}\right) = 1-\lim_{n\to\infty}\frac{1}{10^n} = 1.\,$

最后一个步骤—lim 1/10n = 0—通常由实数拥有阿基米德性质这一原理来证明。这个以极限为基础的对0.999…的看法，有时会用比较引人注意但不太精确的话语来表达。例如，在1846年的美国教科书《大学算术》（《The University Arithmetic》）中有这么一句：“0.999+，到无穷远处等于1，这是因为每加上一个9，都会使它的值更加接近于1”（.999 +, continued to infinity = 1, because every annexation of a 9 brings the value closer to 1）；在1895年的美国教科书《Arithmetic for Schools》（《学校算术》）中也有：“…如果有非常多的9，那么1和0.99999…的差就小得难以想像了”（“…when a large number of 9s is taken, the difference between 1 and .99999…becomes inconceivably small”）。这种启发式的教学法，常常被学生们误解为0.999…本身就小于1。

#### 区间套和最小上界

<image>

以上的级数定义，是一个用小数展开式来定义实数的简单的方法。还有一种补充的方法，是相反的过程：对于一个给定的实数，定义一个相关的小数展开式。

如果知道一个实数x位于闭区间0, 10内（也就是说，这个实数大于或等于0，而小于或等于10），这时就可以想像把这个区间分成十个部分，只在终点处相重叠：0, 1、1, 2、2, 3，依此类推，直到9, 10。实数x一定是属于这十个区间的一个；如果它属于2, 3，这时就把数字“2”记录下来，并把这个区间再细分成十个子区间：2, 2.1、2.1, 2.2、…、2.8, 2.9、2.9, 3。把这个过程一直继续下去，这时便得到了一个无穷的区间套序列，由无穷个数字b0、b1、b2、b3、…来标示，并记

x = b0.b1b2b3…

在这种形式中，1 = 1.000…而且1 = 0.999…的事实，反映了1既位于0, 1，又位于1, 2，所以这时在寻找它的数字时，可以选择任意一个子区间。为了保证这种记法没有滥用“=”号，这时需要一种办法来为每一个小数重新构造一个唯一的实数。这可以用极限来实现，但是还有其它的方法。

一个简单的选择，是区间套定理，它保证只要给出了一个长度趋近于零的闭区间套序列，那么这些区间套的交集就正好是一个实数。这样，b0.b1b2b3…便定义为包含在所有的区间b0, b0 + 1、b0.b1, b0.b1 + 0.1，依此类推的唯一的实数。而0.999…就是位于所有的区间0, 1、0.9, 1、0.99, 1、0.99…9, 1（对于任意有限个9）的唯一的实数。由于1是所有这些区间的公共元素，因此0.999… = 1。

区间套定理通常是建立在一个更加基本的实数特征之上的：最小上界的存在。为了直接利用这些事物，这时可以把b0.b1b2b3…定义为集合{b0，b0.b1，b0.b1b2，…}的最小上界。然后这时就可以证明，这种定义（或区间套的定义）与划分的过程是一致的，再一次证明了0.999… = 1。汤姆·阿波斯托尔得出结论：

一个实数可以有两种不同的小数表示法，仅仅是两个不同的实数集合可以有相同的最小上界的一个反映。(The fact that a real number might have two different decimal representations is merely a reflection of the fact that two different sets of real numbers can have the same supremum.)

### 从建构实数着手

有些方法用公理集合论明确把实数定义为一定的建立在有理数上的结构。自然数──0、1、2、3，依此类推──从零开始并继续增加，这样每一个自然数都有一个后继者。这时可以把自然数的概念延伸到负数，得出所有的整数，并可以进一步延伸到比例，得出所有的有理数。这些数系伴随着加法、减法、乘法和除法的算术。更加微妙地，它们还包括排序，这样一个数就可以与另一个进行比较，并发现是大于、小于，还是等于。

从有理数到实数的一步，是一个很大的延伸。至少有两种常见的方法来达到这一步，它们都在1872年出版：戴德金分割，以及柯西序列。直接用到这些结构的0.999… = 1的证明，现在已经无法在实分析的教科书中找到了；最近几个年代的趋势，是使用公理化的分析。即使提供了这样的一个结构，它也通常被用来证明实数的公理，从而为以上的证明提供证据。然而，有些作者表达了从一个结构开始才是逻辑上更恰当的想法，这样得出的证明就更加完备了。

#### 戴德金分割

在戴德金分割的方法中，每一个实数x定义为所有小于x的有理数所组成的无穷集合。比如说，实数1就是所有小于1的有理数的集合。每一个正的小数展开式很容易决定了一个戴德金分割：小于某个展开阶段的有理数的集合。所以实数0.999…是有理数r的集合，使得r < 0，或r < 0.9，或r < 0.99，或r小于其它具有 形式的数。0.999…的每一个元素都小于1，因此它是实数1的一个元素。反过来，1的一个元素是有理数，也就是。由于0.999…和1包含相同的有理数，因此它们是相同的集合：0.999… = 1。

把实数定义为戴德金分割，首先由理查德·戴德金在1872年出版。

以上把每一个小数展开式分配一个实数的方法，应归于弗雷德·里奇曼在《Mathematics Magazine》（《数学杂志》）上发表的一篇名为“Is 0.999… = 1?”（“0.999… = 1吗？”）的演讲稿，主要是为大学的数学教师，尤其是初级／高级程度，以及他们的学生而作。里奇曼注意到，在有理数的任何一个稠密子集中取戴德金分割，都得到相同的结果；特别地，他用到了十进分数（分母为10的幂的分数），这样便更快得出证明了：“所以，这时看到，在实数的传统定义中，方程 0.9* = 1 在一开始就建立了。”把这个步骤再作进一步的修改，便得到了另外一个结构，里奇曼对描述这个结构更感兴趣；参见以下的“其它数系”。

#### 柯西序列

另外一种构造实数的方法，间接地用到了有理数的排序。首先，有理数x和y之间的距离定义为绝对值|x − y|，其中绝对值|z|定义为z和−z的最大值，因此总是非负的。这样实数便被定义为关于这个距离的具有柯西序列性质的有理数序列。也就是说，每一个实数都是一个柯西收敛的数列（x0，x1，x2，…）。这是一个从自然数到有理数的映射，使得对于任何正有理数δ，总存在一个N，使得对于所有的m、n > N，都有|xm − xn| ≤ δ。（两项之间的距离变得比任何正的有理数都要小。）

如果（xn）和（yn）是两个柯西数列，那么如果数列（xn − yn）有极限0，这两个数列便定义为相等的。把小数b0.b1b2b3…拆开来，便得到了一个有理数序列，它是柯西序列；这个序列对应的实数被定义为这个小数的值。所以，在这种形式中，这时的任务就是要证明，有理数序列

$$\left (1 - 0, 1 - {9 \over 10}, 1 - {99 \over 100}, \cdots\right) = \left (1, {1 \over 10}, {1 \over 100}, \cdots \right)$$

有极限0。对于n = 0、1、2、…，考虑数列的第n项，这时需要证明

$\lim_{n\rightarrow\infty}\frac{1}{10^n} = 0$。

这个极限是众所周知的；一个可能的证明，是在数列的极限的定义中，对于ε = a/b > 0，这时可以取N = b。所以，这又一次证明了0.999… = 1。

把实数定义为柯西序列，首先由爱德华·海涅和格奥尔格·康托尔独立发表，也是在1872年。以上的小数展开式的方法，包括0.999… = 1的证明，则主要是得自格利菲斯（Griffiths）和希尔顿（Hilton）在1970年的作品《一本经典数学的综合教科书：一个当代的阐释》（A comprehensive textbook of classical mathematics: A contemporary interpretation）。这本书是特别为了以当代的眼光回顾一些熟悉的数学概念而作的。

### 推广

0.999… = 1的证明，立刻可以进行两种推广。首先，对于每一个非零的有限小数（也就是说，从某一位开始全是零），都存在另外一个与其相等的数，从某一位开始全是9。例如，0.24999…等于0.25，就像这时考虑的特殊情况。这些数正好是十进分数，而且是稠密的。

其次，一个类似的定理可以应用到任何一个底数或进位制。例如，在二进制中，0.111…等于1；而在三进制中，0.222…等于1。实分析的教科书很有可能略过0.999…的特殊情况，而从一开始就介绍这两种推广的一种或两种。

1的其它表示法也出现在非整数进位制中。例如，在黄金进制中，两个标准的表示法就是1.000…和0.101010…，此外还有无穷多种含有相邻的1的表示法，如0.11，0.1011，0.101011等等。一般地，对于几乎所有的1和2之间的q，在q进制中都有无穷多种1的展开式。而另一方面，依然存在不可数个q（包括所有大于1的自然数），使得在q进制中只有一种1的展开式，除了显然的1.000…。这个结果首先由保罗·埃尔德什、Miklos Horváth和István Joó在大约1990年获得。1998年，Vilmos Komornik和Paola Loreti确定了具有这种性质的最小的进位制──Komornik-Loreti常数q = 1.787231650…。在这个进位制中，1 = 0.11010011001011010010110011010011…；其数字由图厄-摩斯数列给出，不是循环小数。

一个更加深远的推广，提到了最一般的进位制。在这些进位制中，一个数也有多种表示法，在某种意义上来说难度甚至更大。例如：

- 在平衡三进制系统中，1/2 = 0.111… = 1.111…。
- 在阶乘进位制系统中，1 = 1.000… = 0.1234…。

Marko Petkovšek证明了这种歧义是使用进位制的必然结果：对于任何一个把所有实数命名的系统，总有无穷多个实数有多种表示法，而这些实数所组成的集合又是稠密的。他把这个证明称为“一个基本点集拓扑学的指导性的练习”：它包含了把各位数的集合视为斯通空间，并注意到它们的实数表示法可以由连续函数给出。

## 应用

0.999…的其中一个应用，出现在基本数论中。1802年，H·古得温出版了一份观察资料，描述了分母为一定的素数的分数的小数展开式中9的出现。例子包括：

- 1/7 = 0.142857142857…，而142 + 857 = 999。
- 1/73 = 0.0136986301369863…，而0136 + 9863 = 9999。

E·米迪在1836年证明了关于这类分数的一个一般的结果，现在称为米迪定理。当初出版时没有写得很清楚，这时也不知道他的证明是不是直接提到了0.999…，但至少有一个W·G·莱维特的现代证明是这样的。如果这时可以证明，一个具有形式0.b1b2b3…的小数是正整数，那么它就一定是0.999…，这也就是定理中9的来源。在这个方向上继续做研究，就可以得出诸如最大公因子、同余、费马素数、群元素的阶，以及二次互反律等概念。

<image>

回到实分析的主题上，三进制中的类似等式0.222… = 1在刻划康托尔集合──一个最简单的碎形的特征中，扮演了一个十分重要的角色：

- 一个单位区间中的点位于康托尔集合内，当且仅当它在三进制中可以只用数字0和2来表示。

小数中的第n位反映了在第n个阶段时点的位置。例如，点²⁄3可以如常地表示为0.2或0.2000…，这是因为它位于第一个删除部分的右面，以及以后所有的删除部分的左面。点1⁄3则不表示为0.1，而表示为0.0222…，这是因为它位于第一个删除部分的左面，以及以后所有的删除部分的右面。

重复的9还出现在另外一个康托尔的研究成果中。在应用他在1891年发表的对角线论证法来证明单位区间的不可数性时，必须要考虑到这种因素。这种证明需要根据小数展开式来断言两个实数是不同的，所以这时需要避免诸如0.2和0.1999…之类的数对。一个简单的方法把所有的实数表示为无限小数；相反的方法便排除了重复的9的可能性。一个可能更加接近于康托尔原先的证明的变体，实际上使用了二进制，把三进制展开式转换为二进制展开式，这时也可以证明康托尔集合的不可数性。

## 教育中遇到的怀疑

许多学习数学的学生往往怀疑、难以接受0.999… = 1的等式，其原因有很多，从根本不相同的外观，到对数列极限概念的深度疑虑，乃至对无限（无穷）的本性的异议，以及不少对数学错误的观念等背后的因素，从而造成了这种混淆。

- 学生根据以往学习数的大小比较时使用“高位比较，相同再比次高位”的方式，个位 $0 < 1$，导致拒绝承认$0.\bar{9}=1$。
- 许多学生认为无穷小不等于0，并且将0.999…视为一个不定值，即该值只是朝着1的方向无限地扩大，因此它与1的差永远是无限小而不是零，即“永远都差一点”。
- 学生们常常“坚信一个数有且仅有一种小数的表示方法”。当他们看到两个明显不同的小数，表示的却是相同的实数，便认为这是一个悖论，而表面上熟悉的数1，更使这个悖论加深。
- 有些学生把“0.999…”（或类似的记法）理解为很长但有限的一串9，也许长度是可变的、未特别指出的。如果他们接受了有无穷多个9的事实，他们仍然可能认为“在无穷远处”“有最后的一个9”。
- 直觉和模棱两可的教导，都让学生觉得数列的极限是一个无限的过程，而不是一个确定的值，因为一个数列不一定就有极限。如果他们明白了数列和它的极限的差别，他们就有可能把“0.999…”理解为数列，而不是它的极限。
- 有些学生相信收敛级数的值最多只是一个估计，也就是$0.\bar{9} \approx 1$。

这些想法在标准实数系（指具有完备性的）中都是错误的，但在其它数系中则有可能是正确的（要求相应数系不具备阿基米德性质，因为阿基米德性质要求数系中没有非零无穷小）。这些系统要么是为一般的数学用途而发明，要么就是作为指导性的反例，使人们更好地理解0.999…。

许多这些解释都是大卫·塔尔教授发现的，他研究了造成学生们误解的教导方法的特征。他访问了他的学生以决定为什么大多数人在一开始都拒绝接受该等式，发现“学生们仍然继续把0.999…视为一个越来越接近1的数列，而不是一个定值，因为‘你没有指定它有多少位’或‘在所有小于1的小数中，它是最大的数。’”

在所有初等的证明中，用0.333… = 1⁄3乘以3表面上是使学生们迫不得已接受0.999… = 1的一个成功的策略。但是，面对着对第一个等式的相信以及对第二个等式的怀疑，有些学生要么就开始怀疑第一个等式，要么干脆就感到灰心丧气了。同时也还有否认0.999…=1的学生指出1/3 比0.333…大一点（因为1/3是除不完的），所以推法“不成立”。更加复杂的方法，也不是十分有效的；有些学生完全可以应用严格的定义，但当他们被一个高等数学的结果，包括0.999…所震惊时，依然退回到直觉的形象上去了。例如，有一个学习实分析的学生，能够用最小上界的定义来证明0.333… = 1⁄3，但仍然坚称0.999…< 1，基于他早前对长除法的理解。其他学生也能够证明1⁄3 = 0.333…，但是，面对着以上的分数证明，仍然坚称“逻辑”能代替数学运算。

约瑟·马祖尔讲了一个故事：

有一个十分聪明的学习微积分的学生，他对我在课堂上讲的几乎所有内容都要提出一番异议，但对他的计算器深信不疑。

这位学生相信，九个数字就是学习数学所需要的一切，包括计算23的平方根。这位学生对9.99… = 10的极限证法感到别扭，称其为“一个难以想像的无限增长过程”。

作为埃德·杜宾斯基的数学学习的“APOS理论”的一部分，杜宾斯基和他的合作者在2005年提出：任何一个学生，只要把0.999…设想为一个有限的、不确定的数串，与1的差是无穷小，那么他就“还没有对无限小数形成一个完整的过程概念”。其他对0.999…有了完整的过程概念的学生，仍不一定能把这个过程“概括”成一个“对象概念”，就像他们对1的对象概念那样，所以仍然觉得0.999…和1是不一致的。杜宾斯基还把这种概括的能力与把1⁄3视为一个独立的数，以及与把实数的集合视为一个整体联系起来。

## 在大众文化中

随着互联网的崛起，关于0.999…的讨论已经冲出了教室，并走向了新闻组和信息版，包括那些名义上几乎与数学无关的信息版。在新闻组news:sci.math sci.math中，辩论0.999…是一项“受欢迎的运动”，也是常见问答集之一。常见问答集涵盖了1⁄3、乘以10、还有极限的证明，也间接地提到了柯西序列。

一个2003年版的报纸专栏《真实讯息》通过1⁄3和极限讨论了0.999…，并谈到了误解：

我们当中的低等灵长类仍然在抗拒，言道：0.999…其实不是表示一个数，而是表示一个过程。要找到一个数我们必须停止这个过程，这样0.999… = 1的说法便瓦解了。一派胡言。（The lower primate in us still resists, saying: .999~ doesn't really represent a number, then, but a process. To find a number we have to halt the process, at which point the .999~ = 1 thing falls apart. Nonsense.）

《真实讯息》在自己的信息版引用了另外一个不明的信息版中的讨论，那个信息版“大部分是关于电子游戏的”。0.999…的问题在暴雪娱乐的Battle.net论坛的头七年也是一个非常受欢迎的话题，以致于该公司在2004年的愚人节不得不发布了一则“新闻”，声明0.999…就是1：

然后便提供了两个证明，一个是极限的证明，另一个是乘以10的证明。

比较直观的解释，可以把一块圆饼平均切3分来证明。

## 其它数系

虽然实数形成了一个非常有用的数系，把“0.999…”解释为一个实数的决定毕竟还是一个约定，蒂莫西·高尔斯在《Mathematics: A Very Short Introduction》（《数学：一个非常简短的介绍》）中提到，0.999… = 1的等式也是一个约定：

然而，这个约定决不是随意取的，因为如果不采用这种数系，我们就被迫得要么发明一些新奇的东西，要么抛弃大家熟悉的算术规则。（However, it is by no means an arbitrary convention, because not adopting it forces one either to invent strange new objects or to abandon some of the familiar rules of arithmetic.）

这时可以用不同的规则或新的事物来定义其它数系；在数系中，以上的证明便需要重新解释。这时就有可能发现，在某一个给定的数系中，0.999…和1并不一定就是相等的。然而，许多数系都是实数系的延伸，而不是独立的替代物，所以0.999… = 1仍然成立。就算是在这数系中，这时依然值得去检查其它的数系，不仅仅为了知道0.999…是怎样表现的（如果“0.999…”既有意义又不含糊），也为了知道相关现象的表现。如果这种现象与实数系统中的现象不一致的话，那么至少一个建立在这个系统中的假设便一定不成立了。

### 无穷小

0.999… = 1的证明依赖于标准实数的阿基米德性质：不存在非零的无穷小。存在着数学上密切相关的有序代数结构是非阿基米德的，其中包括标准实数的各种各样的替代品。0.999…的意义与这时使用的结构有关。例如，在对偶数中，引进了一个新的无穷小单位ε，就像复数系统中的虚数单位i一样，但是ε² = 0。这样便得出了一个在自动微分中十分有用的结构。这时可以给予对偶数一个字典序，这样ε的倍数就非阿基米德原素。但是，要注意到，作为实数的延伸，在对偶数中仍然有0.999… = 1。尽管ε在对偶数中存在，ε/2也存在，所以ε就不是“最小的正对偶数”。确实是这样，在实数中，并不存在这类的数。

另外一种构造标准实数的替代品的方法，是使用拓扑斯理论和替代的逻辑，而不是集合论和经典的逻辑（一种特殊情况）。例如，在光滑无穷小分析中，就存在没有倒数的无穷小。

非标准分析因包含了一个有无穷小（及它们的反元素）完整阵列的系统而众所周知，它提供了一个不同的，也许是更加直观的，对微积分的处理。A.H. Lightstone在1972年提供了一个非标准小数展开式的发展，其中每一个位于（0, 1）之内的扩展的实数，都有一个唯一的扩展的小数展开式：数列0.ddd…；…ddd…，由扩展的自然数作索引。在这种形式中，0.333…有两种自然的展开式，都不与1/3相差无穷小：

0.333…；…000…不存在，而

0.333…；…333…正好等于1/3。

组合博弈论也提供了替代的实数，无穷的蓝-红Hackenbush就是一个相关的例子。1974年，埃尔温·伯利坎普描述了一个Hackenbush字串与实数的二进制展开式之间的对应关系，由数据压缩的想法所促动。例如，Hackenbush字串LRRLRLRL…的值是0.0101012… = 1/3。然而，LRLLL…的值（对应着0.111…2）则与1相差无穷小。两个数的差是超实数1/ω，其中ω是第一个无穷序数；相关的博弈是LRRRR…或0.000…2。

### 打破减法的惯例

另外一种也可以使以上证明不成立的方法，就是1 − 0.999…根本就不存在，因为减法并不一定就是可能的。具有加法运算但没有减法运算的数学结构包括可交换半群、可交换幺半群，以及半环。里奇曼考虑了两种这类的系统，使得0.999…< 1。

首先，里奇曼把非负的“小数”定义为字面上的小数展开式。他定义了字典序和一种加法运算，注意到0.999… < 1仅仅因为在个位数0 < 1，但对于任何一个有限小数x，都有0.999… + x = 1 + x。所以“小数”的一个独特之处，是等式两边不能同减一个数；另外一个独特之处，就是没有“小数”对应着1⁄3。把乘法也定义了以后，“小数”便形成了一个正的、全序的、可交换的半环。

在定义乘法的过程中，里奇曼还定义了另外一种系统，他称之为“分割D”，它是小数的戴德金分割的集合。通常用这种定义便可以得出实数，但对于小数d他既允许分割（−∞， d），又允许“主分割”（−∞， d。这样做的结果，就是实数与“小数”“不舒服地住在一起”。这个系统中也有0.999… < 1。在分割D中不存在正的无穷小，但存在一种“负的无穷小”──0−，它没有小数展开式。里奇曼得出结论，0.999… = 1 + 0−，而方程“0.999… + x = 1”则没有解。

### p进数

问到关于0.999…的时候，初学者常常相信应该有一个“最后的9”，也就是说，相信1 − 0.999…等于一个正数，可以写为“0.000…1”。不管那有没有意义，目标都是明确的：把1加在0.999…中的最后的9上，就会把所有的9变成0，并在个位数留下一个1。如果考虑到其它的原因，这种想法便不成立了，这是因为在0.999…中，并不存在“最后的9”。对于包含最后的9的无穷多个9，这时必须从别的地方去寻找。

<image>

p进数是在数论中引起兴趣的又一个数系。像实数那样，p进数可以从有理数通过柯西序列得到；但是，这种结构使用了另外一种度量，0与p之间的距离比0与1的距离还要近，而0与pn的距离又比0与p的距离近。对于素数p来说，p进数便形成了一个域，而对于其它的p，包括10来说，则形成了一个环。所以在p进数中可以进行算术，这种数系也不存在无穷小。

在10进数中，类似于小数展开式的事物位于小数点的左面。10进展开式…999确实有一个最后的9，而没有第一个9。这时可以把1加在个位数上，这样进位之后就只剩下0了：1 + …999 = …000 = 0，所以…999 = −1。另外一种推导用到了等比级数。“…999”所指的无穷级数在实数中不收敛，但在10进数中收敛，所以这时可以使用大家熟悉的公式：

$\ldots999 = 9 + 9 (10) + 9 (10) ^2 + 9 (10) ^3 + \cdots = \frac{9}{1-10} = -1.$

（与前面的级数比较。）第三种推导是一个七年级学生发明的，他对老师所讲的0.999… = 1的极限证明感到怀疑，但因而产生了灵感，把以上乘以10的证明应用在相反的方向上：如果x = …999，则10x = …990，因此10x = x − 9，所以x = −1。

作为一个最后的延伸，由于0.999… = 1（在实数中），而…999 = −1（在10进数中），那么这时可以“盲目、大胆地摆弄符号”，把两个等式相加起来，得出：…999.999… = 0。这个等式在10进展开式中和标准小数展开式中都是没有意义的，但假如这时研究出一种“双小数”的理论，其中小数点左面和右面都可以无限延伸，那么这个等式便是有意义和正确的。

## 相关问题

- 芝诺悖论，特别是奔跑者悖论，使人联想起了0.999…等于1的表面上的悖论。奔跑者悖论可以建立一个数学模型，然后就可以像0.999…那样，用等比级数的方法来解决。然而，这时不确定这种数学的论述是不是提到了芝诺所探索的形而上学的问题。
- 除以零出现在0.999…的一些讨论中，也引起了争论。大部分作者都愿意定义0.999…，但几乎都不去定义除以零，这是因为它在实数系统中不可能有意义。然而，在某些其它的系统中，除以零则是有定义的，例如复数分析，其中扩展的复平面，也就是黎曼球面，在无穷远处“有一个点”。在这里，1/0便定义为无穷大；实际上，这个结果有深远的意义，可以应用在工程和物理学中的许多问题上。有些著名的数学家在两个系统发展起来之前就提出了这样的一个定义。
- -0是另外一个记数的多余特征。在诸如实数的数系中，“0”表示加法单位元，既不是正数又不是负数，“−0”的解释是0的相反数，这便迫使了−0 = 0。然而，在某些科学的应用中，使用了独立的正零和负零，大多数常见的计算机记数系统就是这样的（例如储存在符号和大小或一补数的格式中的整数，或由IEEE二进制浮点数算术标准所指定的浮点数）。

## 扩展阅读

- This article is a field study involving a student who developed a Leibnizian-style theory of infinitesimals to help her understand calculus, and in particular to account for 0.999... falling short of 1 by an infinitesimal 0.000...1.

## 外部链接

- When is .999... less than 1? Karin Usadi Katz and Mikhail G. Katz
- 0.999999… = 1?来自cut-the-knot
- 为什么0.9999... = 1？
- 问一位科学家：重复的小数
- 基于算术的等式证明
- 重复的九
- 0.9循环等于1
- 大卫·塔尔的研究
- Metamath上的 0.999...定理
- 果壳网上的 最让人纠结的等式：0.999...=1