# 1 は 0.999… と等しいか：無限小数の意味を決めてから答える

> 0.999… = 1 という主張を、無限小数という記号の意味を定義するところから検討する。1/3 を 3 倍する議論、10 倍して引く議論、部分和と上限による議論を最後まで実行し、直感が反発する理由と二重表現の定理まで説明する。
> https://rikai.mugen-giken.com/mathematics/math-columns/one-equals-0-999

## 0. この記事の要点

- 「$0.999\ldots$ は $1$ と等しいか」という問いは、**そのままでは数学の問いになっていません**。$0.999\ldots$ という記号が何を指すかを先に決める必要があります。
- 標準的な決め方は「$0.9,\ 0.99,\ 0.999,\ \ldots$ という有限小数の列の**上限（＝極限）**」です。この約束のもとで $0.999\ldots = 1$ が**証明できます**。近似でも便宜でもなく、等号です。
- 有名な三つの論証（$1/3$ を $3$ 倍する、$10$ 倍して引く、部分和の上限を定義から直接調べる）は、どれも正しい結論に達しますが、**暗黙に使っている前提が違います**。それを明るみに出すのがこの記事の主目的です。
- 直感が反発する原因は主に三つです。「限りなく近づく過程」と「到達した値」の混同、「最後の桁」があるという思い込み、そして「表記が違えば数も違う」という思い込みです。
- 決め手になるのは実数の**アルキメデス性**（どんな正の数より小さい正の数は存在しない）です。「実数にすきまがない」の内容を、稠密性・完備性・アルキメデス性に分けて整理します。

## 1. 動機：終わらない論争

インターネットで最も再生産されている数学の論争のひとつが、これです。

> $0.999\ldots$（$9$ が無限に続く小数）は $1$ に等しいのか、それとも「$1$ に限りなく近いが $1$ ではない」のか。

この論争が何年経っても終わらないのには理由があります。**両陣営とも、$0.999\ldots$ という記号の意味を述べないまま議論しているから**です。意味が決まっていない記号について「等しい／等しくない」を争っても、決着しようがありません。「この果物は美味しいか」を、どの果物か言わずに議論しているようなものです。

数学が普通の議論と違うのは、この段階で「まず言葉の意味を決めよう」と言い出すところです。定義を決めずに走り出した結果どうなるかは、[ゼロで割ってはいけない理由](/mathematics/math-columns/division-by-zero) でも同じ形で現れます。あちらは「割り算とは何か」（<Ref to="mathematics/math-columns/division-by-zero#def-division" text="割り算＝積の逆演算" />）を決めると $0$ で割る操作が定義できない（<Ref to="mathematics/math-columns/division-by-zero#prop-no-solution" text="0 でない数は 0 で割れない" />）ことが分かる話で、こちらは「無限小数とは何か」を決めると等号が証明できてしまう話です。方向は逆ですが、やっていることは同じです。

そして面白いのは、意味を決めて証明を読み終えたあとでも、多くの人が「頭では分かったが、腹に落ちない」と言うことです。この居心地の悪さ自体が観察に値します。数学教育の研究では、人が持っている心の中のイメージ（concept image）と、正式な定義（concept definition）がずれる現象が調べられており、極限をめぐるそのずれの代表例として、まさにこの $0.999\ldots$ が扱われてきました（Tall と Vinner の 1981 年の論文。参考文献を参照）。直感が裏切られる経験としては [モンティ・ホール問題](/mathematics/math-columns/monty-hall-problem)（<Ref to="mathematics/math-columns/monty-hall-problem#thm-switch" text="変更戦略の勝率は 2/3" />）と同類で、正解を聞いても抵抗が残るところまでよく似ています。

この記事では、次の順で進みます。まず記号の意味を決め（第 2 節）、三つの論証を最後まで実行し（第 3 節）、直感が反発する理由を分解し（第 4 節）、最後に「実数にすきまがない」という言い方の正体を突き止めます（第 5 節・第 6 節）。

## 2. 準備：0.999… は何を指す記号か

まず有限小数から始めます。ここは誰も文句を言わないところです。

<Definition id="def-finite-decimal" title="有限小数の値">
$a_1, a_2, \ldots, a_n$ を $0$ 以上 $9$ 以下の整数とする。記号 $0.a_1a_2\cdots a_n$ は、有限個の和

$$
\sum_{k=1}^{n} a_k \cdot 10^{-k}
$$

を表すものと約束する。
</Definition>

これは単なる略記です。$0.999$ は $9/10 + 9/100 + 9/1000$ のことで、計算すれば $999/1000$ です。有限個の足し算しか出てこないので、何も新しいことは起きていません。

問題は $9$ が無限に続くときです。**無限個の数を足す操作は、まだ定義されていません**。足し算は $2$ 個の数に対して定義された演算で、そこから帰納的に有限個まで拡張されているだけです。無限個の足し算は、定義しない限り存在しません。ここを飛ばして「無限に足したもの」と言った瞬間に、議論は空中に浮きます（無限個の和を部分和の極限として定める一般的な約束については <Ref to="mathematics/math-columns/famous-mathematicians#def-series" text="無限級数の和の定義" /> を参照）。

そこで、無限小数の値を次のように**定める**ことにします。

<Definition id="def-infinite-decimal" title="無限小数の値">
各 $k = 1, 2, 3, \ldots$ に対して $a_k$ を $0$ 以上 $9$ 以下の整数とする。第 $n$ 部分和を

$$
s_n = \sum_{k=1}^{n} a_k \cdot 10^{-k}
$$

と置く。記号 $0.a_1a_2a_3\cdots$ の値とは、集合 $S = \{s_1, s_2, s_3, \ldots\}$ の**上限** $\sup S$、すなわち $S$ の上界のうち最小のもののことである。
</Definition>

この定義が意味を持つには、$\sup S$ が実数として存在しなければなりません。それを保証するのが実数の**連続性公理（上限の存在）**です。$S$ は $1$ で上に押さえられており（$s_n \le \sum_{k=1}^n 9 \cdot 10^{-k} < 1$）、空でもないので、上限が存在します。有理数だけの世界では上限は存在するとは限らない（たとえば $\{x \in \mathbb{Q} : x^2 < 2\}$ に有理数の上限はない）ので、ここは実数の性質を本当に使っています。

<Remark id="rem-sup-is-limit">
$s_1 \le s_2 \le s_3 \le \cdots$ は単調増加なので、$\sup S$ は数列 $(s_n)$ の極限 $\lim_{n \to \infty} s_n$ と一致します。したがって <Ref to="def-infinite-decimal" /> は「部分和の極限」と言っても同じです。以下では便利な方を使います。極限の定義を確認しておくと、「任意の $\varepsilon > 0$ に対してある番号 $N$ が存在し、$n \ge N$ ならば $|s_n - L| < \varepsilon$」が成り立つとき $\lim s_n = L$ と書きます。
</Remark>

<Aside type="note">
定義を選ぶ自由はあります。「$0.999\ldots$ とは $1$ より小さい何かだ」と定義したい人がいてもかまいません。ただしその人には、その新しい対象がどんな数の体系に属し、どう足し算し、どう大小を比べるのかを全部述べる義務が生じます。第 6 節で見るように、これは思ったより高くつきます。
</Aside>

## 3. 三つの論証を最後まで実行する

準備として、有限小数の側の計算を片付けておきます。

<Proposition id="prop-partial-sum" title="9 が n 個並んだ有限小数">
$n \ge 1$ を整数とし、$s_n = \underbrace{0.99\cdots 9}_{n \text{ 個}}$、すなわち $s_n = \sum_{k=1}^{n} 9 \cdot 10^{-k}$ とする。このとき

$$
s_n = 1 - 10^{-n}
$$

が成り立つ。
</Proposition>

<Proof of="prop-partial-sum">
恒等式 $(x - 1)(x^{n-1} + x^{n-2} + \cdots + x + 1) = x^{n} - 1$ を使います。これは左辺を展開すると $x^n + x^{n-1} + \cdots + x$ から $x^{n-1} + \cdots + x + 1$ を引く形になり、中間項がすべて打ち消し合って $x^n - 1$ が残ることから分かります。$x = 10$ を代入すると

$$
9 \cdot (10^{n-1} + 10^{n-2} + \cdots + 10 + 1) = 10^{n} - 1
$$

です。両辺を $10^{n}$ で割ると、左辺は

$$
9 \cdot (10^{-1} + 10^{-2} + \cdots + 10^{-n}) = \sum_{k=1}^{n} 9 \cdot 10^{-k} = s_n
$$

となり（<Ref to="def-finite-decimal" /> による）、右辺は $(10^n - 1)/10^n = 1 - 10^{-n}$ です。よって $s_n = 1 - 10^{-n}$ を得ます。
</Proof>

具体的に確かめておきます。$n = 3$ なら $s_3 = 0.999$ で、$1 - 10^{-3} = 1 - 0.001 = 0.999$。合っています。この式は「$9$ をいくつ並べても、$1$ との差はちょうど $10^{-n}$ だけ残る」と読めます。差は残るのです。**有限個なら**。

### 3.1. 論証その 1：$1/3$ を $3$ 倍する

最もよく見かけるのがこれです。

<Proposition id="prop-third" title="1/3 の展開からの帰結">
$0.333\ldots = 1/3$（$3$ が無限に続く）が成り立つならば、$0.999\ldots = 1$ が成り立つ。
</Proposition>

<Proof of="prop-third">
$t_n = \underbrace{0.33\cdots 3}_{n \text{ 個}}$ と置きます。<Ref to="prop-partial-sum" /> の計算をそのまま $3$ で割れば、$t_n = s_n / 3 = (1 - 10^{-n})/3$ です。仮定より $\lim_{n\to\infty} t_n = 1/3$。

一方、$s_n = 3 t_n$ ですから、数列の極限が定数倍と交換すること（$\lim c\,t_n = c \lim t_n$）を使って

$$
\lim_{n \to \infty} s_n = \lim_{n \to \infty} 3 t_n = 3 \cdot \frac{1}{3} = 1
$$

を得ます。<Ref to="rem-sup-is-limit" /> によりこの極限が $0.999\ldots$ の値ですから、$0.999\ldots = 1$ です。
</Proof>

<Remark id="rem-third-circular">
この論証は正しいのですが、**説得力の出どころに注意が必要**です。$0.333\ldots = 1/3$ という等式は、$0.999\ldots = 1$ と同じ種類の主張です（どちらも「無限小数の値が、ある有理数にぴったり等しい」）。したがってこれは、片方を認めるならもう片方も認めよ、という**整合性の議論**であって、ゼロからの証明ではありません。「$1/3$ の方は筆算で納得できるから安心だ」と感じるとすれば、それは筆算という手続きに慣れているだけで、論理的にはどちらも同じ崖の上に立っています。証明としての正体は「定数倍と極限が交換する」という一点にあります。
</Remark>

### 3.2. 論証その 2：$10$ 倍して引く

次に有名なのがこれです。$x = 0.999\ldots$ と置き、$10x = 9.999\ldots$ だから $10x - x = 9$、よって $x = 1$。$3$ 行で終わります。速いのですが、$10$ 倍したときに小数点以下がそっくり同じ形で残る、という部分を暗黙に使っています。そこを埋めると次のようになります。

<Proposition id="prop-shift" title="桁ずらしの論証">
$x = 0.999\ldots$ を <Ref to="def-infinite-decimal" /> の意味で定めると、$10x = 9 + x$ が成り立つ。したがって $x = 1$ である。
</Proposition>

<Proof of="prop-shift">
$s_n = 1 - 10^{-n}$（<Ref to="prop-partial-sum" />）に対し、$n \ge 2$ のとき

$$
10 s_n = 10(1 - 10^{-n}) = 10 - 10^{-(n-1)} = 9 + \bigl(1 - 10^{-(n-1)}\bigr) = 9 + s_{n-1}
$$

です。ここで使ったのは指数法則 $10 \cdot 10^{-n} = 10^{-(n-1)}$ と、<Ref to="prop-partial-sum" /> を $n-1$ に適用した式だけです。この等式は「$0.99\cdots9$（$n$ 個）を $10$ 倍すると $9.99\cdots9$（小数点以下 $n-1$ 個）になる」という当たり前の事実の、式による表現です。

両辺で $n \to \infty$ とします。<Ref to="rem-sup-is-limit" /> より $\lim s_n = x$ であり、$\lim s_{n-1} = x$ でもあります（番号を $1$ ずらしても極限は変わりません）。極限は定数倍と加法を保つので、左辺は $10x$、右辺は $9 + x$ に収束します。極限は一意なので $10x = 9 + x$、すなわち $9x = 9$、$x = 1$ です。
</Proof>

<Remark id="rem-shift-danger">
この論証を「無限小数どうしの引き算を筆算でやった」と受け取ると危険です。同じ手つきで $y = \cdots 999$（左に $9$ が無限に続く整数）に対して $10y = \cdots 990 = y - 9$ から $y = -1$ が出ますが、これは通常の実数の中では成り立ちません。**極限が存在することを確かめずに演算だけ形式的に走らせると、平気で偽の結論に着きます。** 定義されていない操作を一手だけこっそり混ぜると結論がいくらでも壊れるという点では、$0$ で割る一手を隠して $1 = 2$ を導く偽証明（<Ref to="mathematics/math-columns/division-by-zero#ex-fake-proof" text="1 = 2 の偽証明" />）と同じ構図です。上の証明が正しいのは、$x$ が存在する実数だと <Ref to="def-infinite-decimal" /> で保証済みだからです。なお $\cdots 999 = -1$ が本当に成り立つ数の体系もあります。それは第 6 節で触れます。
</Remark>

### 3.3. 論証その 3：定義に直接あたる

前の二つは「$0.999\ldots$ が実数として存在する」ことを認めた上での変形でした。定義から直接やると、次のようになります。これが本命です。準備として、道具をひとつ用意します。第 5 節の主役でもあります。

<Lemma id="lem-archimedes" title="アルキメデスの原理（10 の冪の版）">
任意の実数 $\varepsilon > 0$ に対して、$10^{-n} < \varepsilon$ を満たす自然数 $n$ が存在する。
</Lemma>

<Proof of="lem-archimedes">
まず $10^{n} \ge 1 + 9n$ をすべての自然数 $n$ について示します。$n = 1$ のとき $10 \ge 10$ で成立します。$n$ で成り立つとすると

$$
10^{n+1} = 10 \cdot 10^{n} \ge 10(1 + 9n) = 10 + 90n \ge 10 + 9n = 1 + 9(n+1)
$$

（二つ目の不等号は $90n \ge 9n$、すなわち $81n \ge 0$ から従います）となり、$n+1$ でも成り立ちます。よって数学的帰納法によりすべての $n$ で成り立ちます。

次に、実数のアルキメデス性（任意の実数 $M$ に対し $n > M$ となる自然数 $n$ が存在する）を $M = 1/(9\varepsilon)$ に適用して、$n > 1/(9\varepsilon)$ を満たす自然数 $n$ を取ります。この $n$ について

$$
10^{n} \ge 1 + 9n > 9n > 9 \cdot \frac{1}{9\varepsilon} = \frac{1}{\varepsilon}
$$

が成り立ちます（左端はいま示した不等式、次は $1 > 0$、その次は $n > 1/(9\varepsilon)$ の両辺を $9$ 倍したものです）。$10^{n}$ と $1/\varepsilon$ はともに正なので、両辺の逆数を取ると不等号の向きが変わり、$10^{-n} < \varepsilon$ を得ます。
</Proof>

<Theorem id="thm-main" title="0.999… = 1">
$s_n = \underbrace{0.99\cdots9}_{n\text{ 個}}$、$S = \{s_1, s_2, s_3, \ldots\}$ とする。<Ref to="def-infinite-decimal" /> の意味で $0.999\ldots = \sup S$ と定めるとき、

$$
0.999\ldots = 1
$$

が成り立つ。
</Theorem>

<Proof of="thm-main">
上限が「上界のうち最小のもの」であることを、二段階で確かめます。

**第 1 段：$1$ は $S$ の上界である。** <Ref to="prop-partial-sum" /> より $s_n = 1 - 10^{-n}$ で、$10^{-n} > 0$ ですから $s_n < 1$ がすべての $n$ で成り立ちます。よって $1$ は $S$ の上界です。

**第 2 段：$1$ より小さい数は $S$ の上界になれない。** $c < 1$ を任意に取り、$\varepsilon = 1 - c > 0$ と置きます。<Ref to="lem-archimedes" /> により、$10^{-n} < \varepsilon$ となる自然数 $n$ が存在します。この $n$ に対して

$$
s_n = 1 - 10^{-n} > 1 - \varepsilon = c
$$

となり、$c$ より大きい $S$ の元 $s_n$ が見つかりました。よって $c$ は上界ではありません。

第 1 段で $1$ が上界であり、第 2 段で $1$ 未満のものはどれも上界でないと分かったので、上界の最小値は $1$ です。すなわち $\sup S = 1$、つまり $0.999\ldots = 1$ です。
</Proof>

この証明の形は覚えておく価値があります。「上限が $L$ である」を示すには、いつも二段階です。$L$ が上界であること（誰も $L$ を超えない）と、$L$ より少しでも小さい値では届かない元がいること。第 2 段こそが、$1$ を「ぎりぎりの値」たらしめている部分です。

<Example id="ex-half" title="0.4999… = 0.5 を最後まで計算する">
$t_n = 0.4\underbrace{99\cdots9}_{n-1 \text{ 個}}$（$n \ge 2$）と置きます。定義に従って

$$
t_n = \frac{4}{10} + \sum_{k=2}^{n} 9 \cdot 10^{-k}
= \frac{4}{10} + \frac{1}{10}\sum_{j=1}^{n-1} 9 \cdot 10^{-j}
= \frac{4}{10} + \frac{1}{10}\bigl(1 - 10^{-(n-1)}\bigr)
$$

です（$k = j+1$ と置き換え、<Ref to="prop-partial-sum" /> を $n-1$ に適用しました）。整理すると

$$
t_n = 0.4 + 0.1 - 10^{-n} = 0.5 - 10^{-n}.
$$

<Ref to="thm-main" /> の証明とまったく同じ二段階の議論（$0.5$ は上界、$c < 0.5$ は <Ref to="lem-archimedes" /> により上界になれない）で $\sup\{t_n\} = 0.5$ が従います。つまり $0.4999\ldots = 0.5$ です。$0.999\ldots = 1$ は特別な事故ではなく、$0$ でない有限小数のすべてに同じことが起きます。
</Example>

<Example id="ex-base-two" title="2 進法でも同じことが起きる">
$2$ 進法で $0.111\ldots_{(2)}$ を考えます。部分和は $u_n = \sum_{k=1}^{n} 2^{-k}$ で、<Ref to="prop-partial-sum" /> と同じ恒等式（$x = 2$ の場合）から $u_n = (2^n - 1)/2^n = 1 - 2^{-n}$ です。$2^{n} \ge 1 + n$（$n=1$ で $2 \ge 2$、$2^{n+1} = 2\cdot 2^n \ge 2 + 2n \ge 2 + n$ による帰納法）なので $2^{-n}$ はいくらでも小さくなり、<Ref to="thm-main" /> とまったく同じ二段階の議論で $0.111\ldots_{(2)} = 1$ を得ます。**この現象は $10$ という基数のせいではありません。** 位取り記法という仕組みそのものに内在しています。
</Example>

<Example id="ex-repeating" title="循環小数を分数に直す">
$0.363636\ldots$ を計算します。$2$ 桁ずつまとめると、部分和は $v_n = \sum_{k=1}^{n} 36 \cdot 100^{-k}$ です。恒等式 $(x-1)(x^{n-1} + \cdots + x + 1) = x^n - 1$ に $x = 100$ を入れると $99(100^{n-1} + \cdots + 1) = 100^n - 1$ ですから、両辺に $36/(99 \cdot 100^{n})$ を掛けて

$$
v_n = \frac{36}{99} \cdot \frac{100^n - 1}{100^n} = \frac{36}{99}\bigl(1 - 100^{-n}\bigr) = \frac{4}{11}\bigl(1 - 100^{-n}\bigr)
$$

を得ます。$100^{-n} \le 10^{-n}$ なので <Ref to="lem-archimedes" /> が使え、$\sup\{v_n\} = 4/11$ です。実際 $4 \div 11 = 0.3636\ldots$ で辻褄が合っています。すべての循環小数はこの手順で分数に直せます。逆に、循環しない無限小数は無理数です。
</Example>

<Figure caption="0.999… = 1 の論理構造。定義を決める段階と、証明の段階が分かれている">
<Mermaid code={`flowchart TD
  A["記号 0.999… の意味を決める"] --> B["部分和の列 0.9, 0.99, 0.999, …"]
  B --> C["その上限を値と定める（上限の存在は実数の連続性公理）"]
  C --> D["上限は 1 か"]
  D --> E["1 は上界：どの部分和も 1 未満"]
  D --> F["1 未満の数は上界になれない：アルキメデスの原理"]
  E --> G["0.999… = 1"]
  F --> G`} />
</Figure>

## 4. なぜ直感は反発するのか

証明を三通り読んでも納得できないとしたら、それは論理の問題ではなく、心の中のイメージの問題です。よくある引っかかりを、ひとつずつ分解します。

**引っかかり 1：「限りなく近づく」は過程であって、到達点ではない。**

$0.9,\ 0.99,\ 0.999,\ \ldots$ という列を思い浮かべると、私たちは動画を再生するように、増えていく途中の姿を見ます。その動画のどのコマにも、$1$ との差が残っています（<Ref to="prop-partial-sum" /> のとおり、$n$ コマ目の差はちょうど $10^{-n}$ です）。だから「差はいつまでも消えない」と感じます。

しかしその感覚は正しい。**そして、$0.999\ldots$ はその動画のどのコマでもありません。** <Ref to="def-infinite-decimal" /> が定めたのは、コマの集合全体の上限という、たった一つの静止した数です。動画と、動画が向かっている先とを混同すると、話が噛み合わなくなります。「限りなく近づく」のは列であって、$0.999\ldots$ という数は近づいたりしません。数は動きません。

**引っかかり 2：「最後の $9$ の次に、何かあるはずだ」。**

$1 - 0.999\ldots = 0.000\ldots1$ だ、という主張をよく見ます。この記号を真面目に読んでみます。位取り記法とは、各自然数 $k$ に対して第 $k$ 桁の数字を対応させる規則のことです（<Ref to="def-infinite-decimal" />）。$0.000\ldots1$ と書いたとき、$1$ が置かれているのは第何桁でしょうか。

もし第 $m$ 桁（$m$ は自然数）だと答えるなら、その数は $10^{-m}$ という正の数です。しかし <Ref to="thm-main" /> により差は $0$ ですから、これは違います。「自然数では表せない、いちばん最後の桁だ」と答えるなら、そんな桁は位取り記法に存在しません。自然数の集合 $\mathbb{N} = \{1, 2, 3, \ldots\}$ に最大元がないからです。つまり $0.000\ldots1$ という記号は、**見た目が小数に似ているだけで、何も指していません**。

**引っかかり 3：「書き方が違えば、違う数のはずだ」。**

これは根が深い思い込みです。$1/2$ と $2/4$ と $3/6$ が同じ数であることには誰も抵抗しません。$\sqrt{4}$ と $2$ も同じです。名前と、名前が指すものは別だからです。ところが小数表記だけは、なぜか「数そのもの」だと感じられます。おそらく小学校以来、小数は計算の道具として体に染み付いているせいでしょう。

実際には、小数表記も名前のひとつにすぎません。そして名前が二つある数は確かに存在します。それが第 6 節の二重表現の定理です。

<Figure caption="拡大しても『すきま』は見えてこない。右端に残る帯の幅は 0.1、0.01、0.001 と縮み、どの正の幅よりも小さくなる">
<svg viewBox="0 0 720 215" width="100%" role="img" aria-label="0.9、0.99、0.999 と順に拡大していく三本の数直線">
  <g stroke="currentColor" fill="none" stroke-width="1.5">
    <line x1="60" y1="40" x2="660" y2="40" />
    <line x1="60" y1="110" x2="660" y2="110" />
    <line x1="60" y1="180" x2="660" y2="180" />
    <line x1="60" y1="34" x2="60" y2="46" />
    <line x1="600" y1="34" x2="600" y2="46" />
    <line x1="660" y1="34" x2="660" y2="46" />
    <line x1="60" y1="104" x2="60" y2="116" />
    <line x1="600" y1="104" x2="600" y2="116" />
    <line x1="660" y1="104" x2="660" y2="116" />
    <line x1="60" y1="174" x2="60" y2="186" />
    <line x1="600" y1="174" x2="600" y2="186" />
    <line x1="660" y1="174" x2="660" y2="186" />
  </g>
  <g fill="var(--sl-color-accent)" opacity="0.3">
    <rect x="600" y="34" width="60" height="12" />
    <rect x="600" y="104" width="60" height="12" />
    <rect x="600" y="174" width="60" height="12" />
  </g>
  <g stroke="currentColor" fill="none" stroke-width="1" stroke-dasharray="4 4" opacity="0.7">
    <line x1="600" y1="48" x2="60" y2="98" />
    <line x1="660" y1="48" x2="660" y2="98" />
    <line x1="600" y1="118" x2="60" y2="168" />
    <line x1="660" y1="118" x2="660" y2="168" />
  </g>
  <g fill="currentColor" font-size="13" text-anchor="middle">
    <text x="60" y="24">0</text>
    <text x="600" y="24">0.9</text>
    <text x="668" y="24" text-anchor="start">1</text>
    <text x="60" y="134">0.9</text>
    <text x="600" y="134">0.99</text>
    <text x="668" y="134" text-anchor="start">1</text>
    <text x="60" y="204">0.99</text>
    <text x="600" y="204">0.999</text>
    <text x="668" y="204" text-anchor="start">1</text>
  </g>
</svg>
</Figure>

## 5. 「実数にすきまがない」とは、正確には何のことか

「実数には $0.999\ldots$ と $1$ の間に入る余地がない」という言い方をよく聞きます。この「余地がない」には、実は性質の異なる三つの主張が混ざっています。分けておきましょう。

<Theorem id="thm-between" title="相異なる二つの実数の間には別の実数がある">
実数 $a, b$ が $a < b$ を満たすならば、$a < c < b$ を満たす実数 $c$ が存在する。実際 $c = (a+b)/2$ が条件を満たす。
</Theorem>

<Proof of="thm-between">
$c = (a+b)/2$ と置きます。$a < b$ の両辺に $a$ を足すと $2a < a + b$、両辺を $2$ で割って $a < c$。同様に $a < b$ の両辺に $b$ を足すと $a + b < 2b$、両辺を $2$ で割って $c < b$。よって $a < c < b$ です。使ったのは順序と四則の両立（不等式の両辺に同じ数を足してよい、正の数で割ってよい）だけです。
</Proof>

この性質を**稠密性**と呼びます。これを使うと <Ref to="thm-main" /> の別証明が書けます。もし $0.999\ldots < 1$ だとすると、その間に実数 $c$ があるはずです。その $c$ は、すべての $s_n$ より大きく（$s_n \le 0.999\ldots < c$）、しかも $1$ より小さい。ところが <Ref to="thm-main" /> の第 2 段で示したとおり、$1$ より小さい数はどれも $S$ の上界になれません。矛盾です。したがって「間にある数を言ってみてください」という問いかけには、原理的に答えがありません。

しかし稠密性だけでは足りません。実は**有理数だけの世界にも稠密性はあります**（$a, b$ が有理数なら $(a+b)/2$ も有理数）。それでも有理数には $\sqrt{2}$ のところに穴が空いています。稠密であることと、穴がないことは別のことです。

本当に効いているのは <Ref to="lem-archimedes" /> の背後にある性質です。

<Corollary id="cor-no-infinitesimal" title="実数に無限小はない">
実数 $\delta$ が「$\delta > 0$ かつ、すべての自然数 $n$ について $\delta < 1/n$」を満たすことはない。
</Corollary>

<Proof of="cor-no-infinitesimal">
そのような $\delta > 0$ があったとします。$\varepsilon = \delta$ として <Ref to="lem-archimedes" /> を使うと、$10^{-n_0} < \delta$ を満たす自然数 $n_0$ が取れます。

一方、$N = 10^{n_0}$ もまた自然数ですから、仮定「すべての自然数 $n$ について $\delta < 1/n$」を $n = N$ に適用できて

$$
\delta < \frac{1}{10^{n_0}} = 10^{-n_0}
$$

を得ます。これと $10^{-n_0} < \delta$ を合わせると $\delta < \delta$ となり、矛盾です。よってそのような $\delta$ は存在しません。
</Proof>

これで役者が揃いました。三つの性質を整理します。

| 性質 | 内容 | 有理数 $\mathbb{Q}$ | 実数 $\mathbb{R}$ | $0.999\ldots = 1$ への効き方 |
|---|---|---|---|---|
| 稠密性 | 相異なる二数の間に別の数がある | 成り立つ | 成り立つ | 「間の数を出せ」という反論を封じる |
| アルキメデス性 | 無限小が存在しない（<Ref to="cor-no-infinitesimal" />） | 成り立つ | 成り立つ | **等号の決め手**。$1$ 未満は上界になれない |
| 完備性 | 上に有界な集合に上限がある | 成り立たない | 成り立つ | **記号 $0.999\ldots$ に値を与える** |

<Remark id="rem-which-axiom">
表から読み取ってほしいのは次の点です。$0.999\ldots = 1$ という等式そのものは、実は有理数の範囲でも成り立ちます（部分和も極限も有理数なので）。完備性が必要になるのは等式の証明ではなく、その手前、**「無限に $9$ が続く記号に、そもそも数を対応させてよい」と言うところ**です。「実数は連続だから $0.999\ldots = 1$ なのだ」という説明は、当たらずといえども遠からず、といったところです。等号を決めているのはアルキメデス性で、記号に意味を与えているのが完備性です。
</Remark>

## 6. 逃げ道はあるか：二重表現と、無限小のある世界

<Ref to="ex-half" /> で見たとおり、二つの表現を持つ数は $1$ だけではありません。どれがそうなるかは完全に決まります。

<Theorem id="thm-double-rep" title="小数展開の二重表現">
$x$ を $0 < x \le 1$ を満たす実数とする。$x$ が二つ以上の相異なる小数展開（$0.a_1a_2a_3\cdots$ の形の表現、ただし $x = 1$ は $1.000\ldots$ も含めて考える）を持つための必要十分条件は、$x$ がある整数 $q \ge 1$ と整数 $k \ge 0$ を用いて $x = q/10^{k}$ と書けること、すなわち $x$ が有限小数であることである。このとき表現はちょうど二つで、一方は末尾が $0$ の繰り返し、他方は末尾が $9$ の繰り返しになる。
</Theorem>

<Remark id="rem-double-rep-proof">
証明は Appendix に置きました。議論の骨格は「二つの展開が最初に食い違う桁を見つけ、そこで不等式を両側から挟むと、等号成立の条件として『片方は以降ずっと $0$、他方は以降ずっと $9$』が強制される」というものです。<Ref to="lem-archimedes" /> を使うのは、$9$ が続く方の値を評価する一箇所だけです。
</Remark>

<Remark id="rem-why-it-matters">
この重複は不便に見えますが、数学の中では積極的に使われます。たとえばカントール集合を「$3$ 進展開に $1$ が現れない数の全体」と定義するとき、$1/3 = 0.1000\ldots_{(3)} = 0.0222\ldots_{(3)}$ という二重表現のおかげで $1/3$ はちゃんとカントール集合に属します。二重表現を無視すると、この定義は壊れます。
</Remark>

では、$0.999\ldots \ne 1$ となる世界を作ることはできるでしょうか。二つの方向を紹介します。どちらも実在する数学ですが、期待どおりの逃げ道にはなっていません。

<Remark id="rem-hyperreal">
**超実数（無限小のある順序体）。** 実数を拡張して、$0$ より大きくどんな $1/n$ よりも小さい無限小 $\delta$ を含む体 $^{*}\mathbb{R}$ を作れます。これは <Ref to="cor-no-infinitesimal" /> と矛盾しません。$^{*}\mathbb{R}$ はアルキメデス的でない、つまり別の体系だからです。ここでなら $1 - \delta$ のような「$1$ より無限小だけ小さい数」が本当に存在します。

しかし、これで $0.999\ldots \ne 1$ になるわけではありません。$0.999\ldots$ という記号が「自然数 $1, 2, 3, \ldots$ で番号付けられた $9$ の列」を意味する限り、その部分和の列は標準的な自然数で添字付けられており、値はやはり $1$ です。差を作るには、**添字の方を無限大の超自然数 $H$ まで延長して「$9$ が $H$ 個」の有限和 $1 - 10^{-H}$ を考える**必要があります。これは記号の意味を取り替える操作であって、同じ記号の値が変わったわけではありません。この論点をていねいに論じた文献として Katz と Katz の論文があります（参考文献）。
</Remark>

<Remark id="rem-p-adic">
**$10$ 進数（$p$ 進数の親戚）。** <Ref to="rem-shift-danger" /> で「実数では成り立たない」と書いた $\cdots 999 = -1$ は、$10$ 進整数の世界では正真正銘の等式です。そこでは二つの数の近さを「差が $10$ の何乗で割り切れるか」で測ります。$10$ で割り切れるほど近い、$100$ で割り切れるならもっと近い、という測り方です。この意味で $\cdots 999 + 1 = \cdots 000 = 0$ であり、確かに $\cdots 999 = -1$ です。

ここで起きているのは、$9$ が**左**に無限に伸びる話です。私たちの $0.999\ldots$ は右に伸びます。近さの測り方を変えると、無限に続く桁がどちら向きに意味を持つかが逆転する、というのは記憶に値する現象です。数の体系は一つではなく、何を「近い」と呼ぶかを決めた時点で世界が決まります。
</Remark>

結局のところ、$0.999\ldots \ne 1$ にするには、実数を捨てるか、記号の意味を取り替えるかしかありません。そしてどちらを選んでも、「$1$ に限りなく近いが $1$ でない数」という素朴なイメージがそのまま実現するわけではないのです。この、直感を守ろうとすると想像以上のコストが請求されるという感触は、[数学はなぜ難しいのか](/mathematics/math-columns/why-math-is-hard) で扱うテーマそのもの、すなわち <Ref to="mathematics/math-columns/why-math-is-hard#def-abstraction" text="抽象化" /> という壁の一例です。

## 7. 演習

<Exercise id="exr-eight" difficulty="易">
$7.999\ldots = 8$ を、部分和の列を書き下して示してください。

<Solution>
第 $n$ 部分和は $w_n = 7 + \underbrace{0.99\cdots9}_{n \text{ 個}}$ です。<Ref to="prop-partial-sum" /> より

$$
w_n = 7 + (1 - 10^{-n}) = 8 - 10^{-n}.
$$

$10^{-n} > 0$ なのですべての $n$ で $w_n < 8$、つまり $8$ は上界です。次に $c < 8$ とし、$\varepsilon = 8 - c > 0$ と置くと、<Ref to="lem-archimedes" /> により $10^{-n} < \varepsilon$ となる $n$ が取れ、その $n$ に対して $w_n = 8 - 10^{-n} > 8 - \varepsilon = c$ となるので $c$ は上界ではありません。よって上界の最小値は $8$ であり、<Ref to="def-infinite-decimal" /> の意味で $7.999\ldots = 8$ です。
</Solution>
</Exercise>

<Exercise id="exr-repeating-fraction" difficulty="標準">
$0.1234343434\ldots$（小数第 $3$ 位以降、$34$ が無限に繰り返す）を既約分数で表してください。

<Solution>
循環しない先頭部分と、循環する部分に分けます。

$$
x = 0.12 + 0.00343434\ldots = \frac{12}{100} + \frac{1}{100} \times 0.343434\ldots
$$

（第 2 項では、循環部分の小数点を $2$ 桁ぶん右に戻すかわりに $1/100$ を掛けました）。<Ref to="ex-repeating" /> とまったく同じ計算を分子 $34$ で行うと、部分和は $\frac{34}{99}(1 - 100^{-n})$ となり、その上限は $34/99$ です。よって

$$
x = \frac{12}{100} + \frac{1}{100}\cdot\frac{34}{99} = \frac{12}{100} + \frac{34}{9900} = \frac{1188}{9900} + \frac{34}{9900} = \frac{1222}{9900} = \frac{611}{4950}.
$$

既約であることを確かめます。$611 = 13 \times 47$、$4950 = 2 \times 3^2 \times 5^2 \times 11$ で共通の素因数がないので、$611/4950$ は既約です。検算として $611 \div 4950$ を筆算すると $0.123434\ldots$ となり、一致します。
</Solution>
</Exercise>

<Exercise id="exr-epsilon-n" difficulty="標準">
$s_n = 1 - 10^{-n}$ とします。任意の $\varepsilon > 0$ に対し、「$n \ge N$ ならば $1 - s_n < \varepsilon$」となる $N$ を $\varepsilon$ の式で与えてください。また $\varepsilon = 10^{-6}$ と $\varepsilon = 1/2026$ のそれぞれについて、条件を満たす最小の $N$ を求めてください。

<Solution>
$1 - s_n = 10^{-n}$ なので、条件は $10^{-n} < \varepsilon$、すなわち $10^{n} > 1/\varepsilon$、両辺の常用対数を取って $n > \log_{10}(1/\varepsilon)$ と同値です。したがって

$$
N = \lfloor \log_{10}(1/\varepsilon) \rfloor + 1
$$

と取れば十分です（$\lfloor \cdot \rfloor$ は床関数）。$10^{-n}$ は $n$ について単調減少なので、$n \ge N$ でも条件は保たれます。

$\varepsilon = 10^{-6}$ のとき、$10^{n} > 10^{6}$ が必要十分で、これは $n \ge 7$ と同値です。よって最小の $N$ は $7$。実際 $n = 6$ では $10^{-6} < 10^{-6}$ が偽なので $6$ では足りません。

$\varepsilon = 1/2026$ のとき、条件は $10^{n} > 2026$ です。$10^{3} = 1000 < 2026$、$10^{4} = 10000 > 2026$ なので最小の $N$ は $4$ です。つまり $0.9999$ の時点で、すでに $1$ との差は $1/2026$ より小さくなっています。
</Solution>
</Exercise>

<Exercise id="exr-last-digit" difficulty="難">
「$1 - 0.999\ldots = 0.000\ldots1$ である」という主張を検討してください。$0.000\ldots1$ を無限小数として真面目に解釈しようとすると何が起きるかを、<Ref to="def-infinite-decimal" /> と <Ref to="cor-no-infinitesimal" /> に照らして説明してください。

<Solution>
<Ref to="def-infinite-decimal" /> によれば、無限小数とは各自然数 $k$ に「第 $k$ 桁の数字 $a_k$」を対応させたものです。$0.000\ldots1$ と書くとき、数字 $1$ が置かれた位置を $m$ としましょう。可能性は二つです。

**（i）$m$ が自然数である場合。** このとき $a_m = 1$、他はすべて $0$ ですから、部分和は $n < m$ で $0$、$n \ge m$ で $10^{-m}$ となり、上限は $10^{-m}$ です。これは正の数です。一方 <Ref to="thm-main" /> より $1 - 0.999\ldots = 0$ なので、$10^{-m} = 0$ となって矛盾します（$10^{-m} > 0$）。

**（ii）$m$ が「すべての自然数より後ろ」である場合。** そのような桁は <Ref to="def-infinite-decimal" /> の枠組みに存在しません。桁の位置は自然数で指定すると決めたからです。$\mathbb{N}$ に最大元がない以上、「最後の桁の次」は記法の外にあります。

仮に（ii）を実現する数 $\delta$ を無理に導入したとすると、$\delta$ はすべての $m$ について $0 < \delta < 10^{-m}$ を満たさねばならず、<Ref to="cor-no-infinitesimal" /> によりそのような実数は存在しません。つまり $0.000\ldots1$ は、実数の中では何も指していない記号です。実数の外に出て無限小を持つ体系（<Ref to="rem-hyperreal" />）を採用すれば $\delta$ 自体は存在させられますが、その場合も $0.999\ldots$ の値は依然として $1$ のままで、差が $\delta$ になるわけではありません。
</Solution>
</Exercise>

<Aside type="tip">
四つの演習を通して使っているのは、結局どれも同じ二つの道具です。ひとつは有限個の和の公式（<Ref to="prop-partial-sum" />）、もうひとつは「差をいくらでも小さくできる」こと（<Ref to="lem-archimedes" />）。無限小数を扱う場面では、この二つ以外はほとんど出てきません。
</Aside>

## 参考文献

- 高木貞治『解析概論』岩波書店 — 第 1 章（実数の連続性と数列の極限。無限小数と実数の対応が扱われています）。
- 杉浦光夫『解析入門 I』東京大学出版会、1980 — 第 I 章（実数の公理系、上限・下限、アルキメデスの原理）。
- W. Rudin, *Principles of Mathematical Analysis*, 3rd ed., McGraw-Hill, 1976 — Chapter 1（The Real and Complex Number Systems。実数体の構成と上限性質）。
- D. Tall and S. Vinner, "Concept image and concept definition in mathematics with particular reference to limits and continuity", *Educational Studies in Mathematics* 12 (1981), 151–169. [DOI: 10.1007/BF00305619](https://doi.org/10.1007/BF00305619)
- K. U. Katz and M. G. Katz, "When is .999... less than 1?", *The Montana Mathematics Enthusiast* 7 (2010), 3–30. [arXiv:1007.3018](https://arxiv.org/abs/1007.3018)
- F. Q. Gouvêa, *p-adic Numbers: An Introduction*, 3rd ed., Springer, 2020 — Chapter 1・Chapter 3（$p$ 進的な近さの測り方と、左に無限に伸びる展開）。

## Appendix: 二重表現の定理の証明

**方針。** <Ref to="thm-double-rep" /> のうち、難しいのは「二つの展開があるなら有限小数」の向きです。二つの展開が最初に食い違う桁に注目し、値を上下から挟みます。挟んだ結果が一致してしまうので、不等式はすべて等号でなければならず、そこから桁の形が決まります。

**逆向き（有限小数なら二つの展開を持つ）。** $x = 0.a_1a_2\cdots a_k$（$a_k \ne 0$、$k \ge 1$）とします。ひとつ目の展開は $a_1 a_2 \cdots a_k 000\cdots$ です。ふたつ目は、第 $k$ 桁を $a_k - 1$ に下げ、以降をすべて $9$ にしたものです。実際、<Ref to="ex-half" /> と同じ計算で、$k$ 桁目以降の寄与は

$$
(a_k - 1)\cdot 10^{-k} + \sum_{j > k} 9 \cdot 10^{-j} = (a_k - 1) \cdot 10^{-k} + 10^{-k} = a_k \cdot 10^{-k}
$$

となり、値が変わりません（第 2 の等号で、$9$ の無限列の値が $10^{-k}$ であること、つまり <Ref to="thm-main" /> を $10^{-k}$ 倍したものを使いました）。$x = 1$ のときは $1.000\ldots$ と $0.999\ldots$ が対応する二つです。

**順向き（二つの展開があるなら有限小数）。** 同じ $x$ に対する相異なる二つの展開 $(a_k)$、$(b_k)$ があるとします。相異なるので、$a_m \ne b_m$ となる添字が存在し、そのうち最小のものを $m$ とします（自然数の空でない部分集合には最小元があります）。必要なら二つの展開の名前を入れ替えて、$a_m > b_m$、すなわち $a_m \ge b_m + 1$ としてかまいません（桁の数字は整数だからです）。$P = \sum_{k < m} a_k 10^{-k} = \sum_{k<m} b_k 10^{-k}$（$m$ の最小性より両者は一致します）と置きます。

$(a_k)$ 側からの下からの評価。すべての項は非負なので、

$$
x \ge P + a_m 10^{-m} \ge P + (b_m + 1) 10^{-m}.
$$

$(b_k)$ 側からの上からの評価。$b_k \le 9$ を使うと

$$
x \le P + b_m 10^{-m} + \sum_{k > m} 9 \cdot 10^{-k} = P + b_m 10^{-m} + 10^{-m} = P + (b_m + 1)10^{-m}
$$

です（<Ref to="thm-main" /> を $10^{-m}$ 倍した式を使いました）。

上下の評価が同じ値になったので、途中の不等号はすべて等号です。等号が成立する条件を読み取ると、

- $a_m = b_m + 1$、
- $(a_k)$ 側で $k > m$ の項の寄与が $0$、つまり $k > m$ のすべてで $a_k = 0$、
- $(b_k)$ 側で $k > m$ のすべてで $b_k = 9$

が同時に成り立ちます。とくに $x = P + a_m 10^{-m}$ は第 $m$ 桁で打ち切られた有限小数であり、$x = q/10^{m}$（$q$ は整数）と書けます。これで有限小数であることが示され、同時に「二つの展開はちょうど $0$ 尾と $9$ 尾の対である」ことも従います。展開が三つ以上あり得ないのも、この議論から分かります。二つ取れば必ず上の形になるので、$0$ 尾と $9$ 尾の二種類しか候補がないからです。
