0.999...=1?

【0.999... < 1 は正しい?】

 あなたも一度はこれを聞いて不思議に思ったことがあるはずです。 すなわち、「0.999... と 9 が無限に続く数は 1 である」と。 しかし、直感で考えると「0.999... < 1」ですよね? この直感は本当に間違っているのでしょうか。 ご安心ください。ここでは、この直感が必ずしも間違いとは言えないことを説明します。

 まず、「0.999... = 1」はどう言う時に正しいのでしょうか? 実は、この式が正しいのは考えている数が実数とか有理数の場合です。 それ以外の数を考えているのなら、この式は必ずしも正しくありません。

 実数とか有理数でないとしたら、他にどんな数があると言うのか? と思う人もいるかもしれません。 しかし、意外と身近に実数でも有理数でもない数は使われているんですよ。 10進表記が正にそれです。

 そんなバカな!10進表記は実数に決まってるって? いやいや、そんなことはありません。10進表記は実数より精度の高い数なんです。 つまり、実数より細かい順序を区別できます。 実数は、それを直接表現するうまい方法がないので、 表現方法として10進表記を流用しているだけなんです。 10進表記の方が精度が高いので、精度の低い実数を表すぶんには問題はありません。

 それではまず、10進表記の順序について説明しましょう。 10進表記は、\(a_0\) を整数部とし、\(a_n~(n=1,2,3,\ldots)\) を小数点以下 \(n\) 桁とする数列 \(\{a_n\}\) と同一視できます。 1.000... なら \((1,0,0,0,\ldots)\) という数列、 0.999... なら \((0,9,9,9,\ldots)\) という数列と等価とみなすことができます。 2つの10進表記 \(\{a_n\}\) と \(\{b_n\}\) があるとき、 辞書式順序という我々のよく知っている順序で比較すれば、両者の大小が決まります。 え?順序にも種類があるの?という人もいるかもしれませんね。 そうなんです。実は実数の順序って、 我々がよく知っている辞書式順序とは違うものなんです。 実数の順序ってとても難しいんですよ。

 一方、 辞書式順序というのは、abc と acc を比較するとき、まず先頭から比較を開始します。 先頭は共に a ですから決着はつきません。次に2文字目を比較します。 2文字目は b と c なので c の方が大きいので決着がついて abc より acc の方が大きいということになります。辞書を引くときの順序ですね。 10進表記を比較するときも、 同じことを数列でやってやります。先頭の数から比較をはじめ、 どちらかの数列の要素で大きいものにたどり着いたときに全体の大小が決まります。 \(\{a_n\}\) より \(\{b_n\}\) が大きいときに \(\{a_n\}\lt\{b_n\}\) と書きます。 比較するのに、実数は一切関係が無いことに注意してください。

 次に、10進表記に対応する実数 \(x\) の求め方を説明しましょう。 10進表記を実数に変換するには以下の公式を使います。

\[ x = \sum_{n=0}^{\infty}\frac{a_n}{10^n} \]

 この計算をした段階で精度が落ちます。つまり、\(\{a_n\}\lt\{b_n\}\) でも \(\displaystyle \sum_{n=0}^{\infty}\frac{a_n}{10^n}=\sum_{n=0}^{\infty}\frac{b_n}{10^n}\) となることがあるわけです。

 実際、0.999... と 1 を比較してみてください。 これは 0.999... と 1.000... の比較です。 辞書式順序で比較すれば、疑いの余地なく先頭が 1 の 1.000... の方が先頭が 0 の 0.999... より大きいですね。すなわち、0.999... < 1 です。 つまり、10進表記では大小関係に関して 0.999... と 1 の区別がつけられるのです。 一方、実数の方は、完備順序体になっていないといけないので、 各種演算法則を考慮すると 0.999... = 1 でなければなりません。 つまり、実数では 0.999... と 1 の区別がつけられないのです。

 重要なことは、ほとんどの人は実数を比較するとき、 10進表記の辞書式順序で比較しているであろうことです。 つまり、0.999... = 1 に感じる違和感は、 我々が無意識のうちに実数ではなく10進表記で比較していることに起因するのでしょう。

 他にも、実数より精度の高い順序は存在します。 実数 \(x\) に対して \([0,x]\) という閉区間を対応させるとします。 すると、\([0,0.5]\subset [0,1]\) のような包含関係がある場合に \([0,0.5]\lt[0,1]\) という順序を考えることができます。 ここで、\([0,1)\) のような半開区間を考えると、 \([0,1)\lt [0,1]\) となりますが、 \(0\le a\lt 1\) のとき、\([0,a]\subset [0,1)\) ですから、 \([0,a]\lt [0,1)\lt [0,1]\) となります。 \([0,x]\) は \(0\) 以上の実数と1対1対応していますから、 \([0,1)\) はどの実数とも対応しません。 つまり、集合の包含関係の方が実数より精度が高いわけです。10進表記で考えると、 \([0,1)\) は正に 0.999... と対応していると考えることができます。

 ただし、10進表記にしろ集合の包含関係にしろ、 実数と同じ四則演算を導入することはできません。 無理やり四則演算を定義しても実数とは異なるケッタイな計算法則になります。 実数における和や積と大小の関係を規定した公理が成り立つとは限りません。 なので、10進表記や集合の包含関係を実数の代わりに使うことはできません。

【2つの実数の等値判定】

 ここでは、実数の精度が低いことを実感できるもう1つの根拠を示しましょう。 皆さんは10進表記を使わず、 2つの実数 \(a, b\) が等しいことを確認しろと言われたらどうしますか? そうですね、\(a - b\) を計算してみて完全に \(0\) になれば OK ですよね。

 しかし、この判定だけでは実は完全ではないと言ったら驚きますか? この方法は極限の概念が出てこない間は完全ですが、 極限の概念を取り扱うと、等しいことの一部でしかありません。

 \(\displaystyle\lim_{n\to\infty}a_n = a\) かつ \(\displaystyle\lim_{n\to\infty}b_n = b\) としましょう。 \(\displaystyle\lim_{n\to\infty}(a_n - b_n) = 0\) なら \(a = b\) です。 つまり、\(a_n\) と \(b_n\) の差の絶対値が、 いくらでも小さくできるのなら両者は等しいということです。重要なことは、 \(a_n\) と \(b_n\) の差は完全な \(0\) とは限らないこということです。 どこまでも \(0\) に近づけられるけれども \(0\) ではない場合もあります。 つまり、細かい差は無視してしまうということです。 \(a - b\) は本当は完全な \(0\) ではなく、 無限小の誤差があるかもしれないわけです。 0.999... = 1 となっても何も不思議ではないですね。

 これで実数の精度が低い理由が分かったと思います。 実は実数の \(0\) は、整数の \(0\) と違って本当の \(0\) ではなく、 無限小のことを表しているわけです。 実数には無限小の概念は存在しないと説明されることが多いですが、 何のことはない、無限小のことを \(0\) とみなしているため、 表面上は無限小が存在しないように見えているだけなんですね。

【実数で、0.999... = 1 となる理由】

 上記では、 実数や有理数でないなら「0.999... < 1」になり得ることを示しました。 これは逆に、実数や有理数ならば「0.999... = 1」ということです。 ここでは、なぜ 1 になるのか。その理由が分かる説明をしたいと思います。

 まず、0.999... という表記が何を表すのかハッキリさせましょう。 ここが曖昧なままだと、何を説明されても納得できないですからね。 \(a = 0.999...\) とおき、\(a\) は以下の条件を満たすとします。

  1. \(a\) は \(1\) より大きくなることはない。つまり \(a\le 1\) である。
  2. \(a\) は \(1\) に最も近い。ただし、必ずしも \(a = 1\) ではない。

 条件1は、\(a\) が \(1\) より小さい側から \(1\) に近づくことを表します。 条件2をもっと具体的に書くと以下のようになります。

  1. \(a\lt b\lt 1\) となる \(b\) は存在しない。

 「最も近い」という概念は案外難しく、条件3がその定義となります。 「\(a\lt 1\) の範囲で \(1\) に最も近い」としてしまうと、 問題設定の段階で \(a = 1\) である可能性を排除してしまうことになるので注意してください。

 ここで、実数の稠密性を考えます。 実は、実数ではなく有理数でも良いのですが、ここでは実数で考えます。 つまり、以下の性質が成り立ちます。

\[ 任意の~x,~y~について、x\lt y~ならば~x\lt z\lt y~となる~z~が存在する \]

 例えば、\(\displaystyle z = \frac{x + y}{2}\) とすれば明らかですね。 この稠密性の対偶を取ると次の命題が成り立ちます。

\[ 任意の~x,~y~について、x\lt z\lt y~となる~z~が存在しないならば~x\ge y~である \]

 この命題の \(x,y,z\) に \(a,1,b\) を代入すると、 以下の命題が成り立ちます。

\[ a\lt b\lt 1~となる~b~が存在しないならば~a\ge 1~である \]

 そして条件3より、\(a\lt b\lt 1\) となる \(b\) は存在しないので、 \(a\ge 1\) が導かれます。また、条件1より \(a\le 1\) なので、 これを合わせると \(a = 1\) ということになります。

 つまり、全順序な数体が稠密性を満たすならば、 必然的に 0.999... = 1 になるということです。 0.999... = 1 の秘密は実数や有理数の稠密性にあったんですね。 こちらのページ で細実数の概念を定義しましたが、細実数は稠密性を満たしません。 \([0,1)\lt [0,1]\) ですが、\([0,1)\lt z\lt [0,1]\) を満たす \(z\) は存在しません。 そのため、細実数では 0.999... < 1 となったわけです。

【無限小数の無限の意味】

 実数において 0.999... = 1 となる理由は上記の証明で分かったと思います。 ここでは、補足説明として 0.999... と 9 が無限に長く続くとはどういう意味なのかを説明したいと思います。

 0.999... = 1 に今一つ納得できないのは、 9 が無限に長く続くとはどういう意味なのか、 実はよく分からないのが原因の一つでしょう。 そこで、\(a = 0.999\ldots\) として、 \(a\) の長さが無限に長いことを具体的に定義してみましょう。

 まず、\(f(x) = 10x - 9\) という関数を考えます。 \(f(x)\) に \(0.9999\) を渡すとこうなります。 \[ f(0.9999) = 9.999 - 9 = 0.999 \] 1桁短くなりましたね。これを繰り返すと、\(f(0.999) = 0.99,~f(0.99) = 0.9\) という風にどんどん短くなります。つまり、0.999...9 のような有限小数に \(f(x)\) を適用すると必ず1桁短くなるということです。したがって、 \(S=\{0.9,0.99,0.999,\cdots,a\}\) と定めて \(x \in S\) の範囲で考えると、 \[ x~は有限小数~\Rightarrow~x \gt f(x) \] が成り立ちます。 ただし、\(x\) の値の表記には数字の \(0\) と \(9\) と小数点のみを使うとします。 ここで上記の関係の対偶を考えると、 \[ x \le f(x)~\Rightarrow~x~は無限小数 \] ということになります。実際、数学的に厳密な計算とは言えませんが、 \[ f(a)=9.999\ldots - 9 = 0.999\ldots = a \] となります。また、 \(a\) を除く \(S\) の全ての要素 \(x\) において \(x \gt f(x)\) となりますから、 これは結局 \[ x = f(x)~\Rightarrow~x~は無限小数 \] ということです。 よってこれを \(a\) が無限に長いことの定義にしてしまいましょう。 つまり、\(a = 0.999\ldots\) が無限に長いとは、 \[ a = f(a) \] が成り立つことであると。

 これで、\(a = 0.999\ldots\) が無限に長いとはどういう意味なのかハッキリしました。すると、 \[ a = f(a) ~\Leftrightarrow~ a = 10a - 9 ~\Leftrightarrow~ 9a = 9 ~\Leftrightarrow~ a = 1 \] となって、\(a = 1\) であることが分かります。

 でも、こう反論されるかもしれません。 \(a = f(a)\) なら、いくら \(f(x)\) を適用しても \(a\) は短くならないから \(a\) が無限小数なのは分かった。 しかし、9 が無限に続いた果てに最後の 9 があったとするなら、 \(f(x)\) を適用すると1桁短くなるのではないか。 つまり、そのような \(a\) は無限に長くとも \[ a \gt f(a)~\Leftrightarrow~ a \gt 10a - 9~\Leftrightarrow~ 9a \lt 9~\Leftrightarrow~ a \lt 1 \] となって、無限に長いけれど \(a \lt 1\) になるのでは?

 ちっ!面倒くさいことに気が付きやがりましたね。その通り、 上記の説明では、 \[ x~は有限小数~\Rightarrow~x \gt f(x)\ \] が成り立つことは示していますが、 \[ x \gt f(x)~\Rightarrow~x~は有限小数 \] が成り立つことは示していません。 つまり、\(a \gt f(a)\) のときに \(a\) が無限小数になる可能性があり、 \(a\) が無限に長いのに \(a \lt 1\) となる可能性を排除できません。 実は、話を有理数や実数に限定すれば、 「\(x \gt f(x)~\Rightarrow~x~は有限小数\)」が成り立ちます。よって、 \(a\) が実数なら \(a\) が無限に長いの意味は \(a = f(a)\) に限定できます。 偉い数学者が実数とはそのようなものだと決めたわけです。 なので、素人が逆らうのはやめておきましょう。 実数のこのような性質をアルキメデスの性質と言います。

 しかし、9 が無限に続いた果てに最後の 9 があるのではないかという素人の直観も、 まったくのデタラメというわけではなく、ちゃんと数学的な根拠はあります。 9 が無限に続いた果てに最後の 9 があるような数のことを非アルキメデス順序体と言います。 実数を拡張して無限大や無限小を扱えるようにした超実数がその代表例です。

【デデキントの切断】

 もう一つ、実数の場合に 0.999... が 1 になる根拠を紹介しましょう。 実数全体の集合 \(R\) を2つの集合 \(A, B\) に分割することを考えます。 このとき、任意の \(x, y\) に対して \(x\in A\land y\in B\Rightarrow x\lt y\) が成り立つとき、この分割をデデキントの切断と言います。 ご存じの方も多いでしょう。

 実数に対してデデキントの切断を作ると、\(A\) に最大値があり \(B\) に最小値が無いか、\(B\) に最小値があり \(A\) に最大値が無いかのどちらかになると実数の公理で定められています。

 もし、0.999... という数が 1 より小さい数として存在しているとすると、 0.999... より大きく 1 より小さい数は存在しませんから、 1 を境にしてデデキントの切断を作ると、 \(A\) に最大値(0.999...)があり、\(B\) に最小値(1)があるという状態になります。 これは実数の公理に反するので、0.999... という数を 1 とは異なる数として考えることはできないということになります。

 この他、デデキントの切断は、 実数の位相構造を決定する重要な役割を果たしています。 つまり、実数の区間 \([a,b]\) を分割したとき、その切り口 \(c\) が \([a,c)\) と \([c,b]\) という端点の無い半開区間と端点のある閉区間になるというお馴染みの性質も、 デデキントの切断に関する公理から決まります。 つまり、開集合の補集合は閉集合であり、 閉集合の補集合は開集合であるということです。 何でもないようなデデキントの切断ですが、 位相構造を決めるということは、収束の意味を決めることでもあります。 0.999... が 1 に収束するという性質も、この位相構造から決まります。

【0.333... = 1/3 は正しい?】

 0.999... = 1 の証明はいくつかありますが、 その中に、0.333... = 1/3 だから 0.333... × 3 = 1 で 0.999... = 1 というものがあります。これを信じている人も多いでしょう。 でも、この証明は 0.999... < 1 である可能性がある段階では単なるデタラメです。詐欺と言ってもいいでしょう。

 よく考えてみてください。0.999... = 1 に納得のいかない人は、 0.9 < 1 だし 0.99 < 1 だし 0.999 < 1 だから、 9 が無限に続く 0.999... も 0.999... < 1 だと思っているのではないでしょうか? 同じことを 0.333... でもやってみてください。 0.3 < 1/3 だし 0.33 < 1/3 だし 0.333 < 1/3 だから、 3 が無限に続く 0.333... も 0.333... < 1/3 とならないと筋が通りません。0.333... < 1/3 なのですから、 それを 3 倍しても 0.333... × 3 < 1 であり、 0.999... < 1 という結論になります。

 この詐欺のトリックは、1/3 は実際に筆算で計算してみた経験のある人が多いが、 0.999... が結果になる筆算をやった経験のある人は少ないことを悪用しています。 実は、1/1 を筆算で計算するとき、少しやり方を変えると 0.999... が導かれます。 筆算で納得できるのなら、そもそも 0.333... = 1/3 を使う必要はありません。

 結局、自分でやってみたことのあることは無批判に信じやすいということです。 しかし、0.333... = 1/3 を使った証明は数学とは言えません。トリックです。 はじめから 0.999... = 1 であることを使って 0.999... = 1 を証明しています。 皆さんもだまされないようにしましょうね。

 もちろん、0.999... = 1 の通俗的な証明の全てがデタラメや詐欺というわけではありません。 無限等比級数の性質を使った証明は、 厳密さには問題があるとしても大筋において正しいものです。 0.999... = 1 に手っ取り早く納得したいなら、 無限等比級数を使った証明で納得しておくのがおすすめです。

【驚愕の ...999 = -1】

 0.999... = 1 は有名ですよね。ところで、0.999... = 1 と同じ論法を使うと ...999 = -1 が証明できることはご存知でしょうか?例えば、以下のようになります。

\[ \begin{eqnarray} x & = & \cdots999\\ 10x & = & \cdots990\\ 10x - x & = & \cdots990 - \cdots999\\ 9x & = & -9\\ x & = & -1 \end{eqnarray} \]

 この証明は、無限に続く数の四則演算の意味を厳密には考えていません。 また、実数の極限で考えれば、...999 は無限大に発散するはずです。 ところが、ある解釈の下では、...999 = -1 を導くことができるのです。 ちょっとやってみましょう。

 実数を拡張して無限大や無限小を扱えるようにした数体に超実数があります。 この超実数を扱う分野を超準解析と言います。 まず、超実数で、0.999... の解釈を考えます。実は色々な解釈が考えられ、 解釈によっては、0.999... < 1 だったり 0.999... = 1 だったりします。 これらの解釈のうち、無限大超自然数 \(H\) 桁目で 9 が打ち止めとなる解釈、 つまり、9 は無限に続いてはいるけれど、 限りなく続いているわけではない解釈を採用すると、0.999... < 1 となります。 9 が打ち止めになるので、これは、1 以下の数で 1 に最も近い数ではありません。 なので、上記 0.999... = 1 の証明とも矛盾しません。

\[ 0.999\ldots = 1 - \frac{1}{10^H} = \frac{9}{10}+\frac{9}{10^2}+\cdots+\frac{9}{10^{H-1}}+\frac{9}{10^H}\lt 1 \]

 念のために言っておきますが、\(H\) は無限大超自然数です。 ですから、これは有限桁の \(H\) で打ち止めになっているのではなく、 無限桁の \(H\) で打ち止めになっています。ややこしいですね。 このように、有限の実数の式で成り立つ関係が、 無限大超実数でも成り立つことを移行原理と言います。

 さて、ここからの話は、超準解析に大して詳しくもない筆者の独自解釈です。 正式な超準解析の説明になっていませんのでご注意ください。

 上記のように解釈すると、 0.999... が2つの部分 \(a, b\) に分解できることが分かります。

\[ a = \frac{9}{10}+\frac{9}{10^2}+\cdots \] \[ b = \cdots+\frac{9}{10^{H-1}}+\frac{9}{10^H} \]

 \(a\) は普通の実数の部分、\(b\) が無限小の部分です。 \(a\) は実数で考えた時の 0.999... ですから、1 になると考えられます。 ですから、b は以下の関係を満たすはずです。

\[ b = \cdots+\frac{9}{10^{H-1}}+\frac{9}{10^H} = -\frac{1}{10^H} \]

 ここで、\(b\) を \(10^H\) 倍してやると、

\[ 10^H b = \cdots+900+90+9 = \cdots 999 = -1 \]

 このように、...999 = -1 が導かれます。しかしながら、正式な超準解析では、 \(a\) や \(b\) は数としては認められていないそうです。 \(a\) や \(b\) は超準解析の意味では極限になりません。 極限の半分という感じです。

 ちなみに、以下の等比級数の無限和の公式

\[ 1 + r + r^2 + r^3 +\cdots = \frac{1}{1 - r} \]

 は、\(|r|\lt 1\) の時のみ正しいとされていますが、 上記の解釈を踏まえて考えると、

\[ \cdots 999 = 9\times(1 + 10 + 10^2 + 10^3 +\cdots) = 9\frac{1}{1 - 10} = -1 \]

となり、\(|r|\ge 1\) の場合にも成り立つと解釈できます。

 最後に ...999.999... = 0 であることを証明しておきましょう。 例によって、無限に続く数の四則演算の意味を厳密には考えません。 以下のようになります。

\[ \begin{eqnarray} x & = & \cdots999.999\cdots\\ 10x & = & \cdots999.999\cdots\\ 10x - x & = & 0\\ 9x & = & 0\\ x & = & 0 \end{eqnarray} \]

 0.999... = 1 で、...999 = -1 なのですから、 それらの和である ...999.999... が 0 というのは辻褄が合っています。 デタラメにしてはよくできているでしょ? この解釈を使うと、\(H\) を無限大超自然数とする時、 以下の関係が成り立つと解釈できます。

\[ \frac{9}{10}+\frac{9}{10^2}+\cdots +\frac{9}{10^{H-1}}+\frac{9}{10^H}+\frac{9}{10^{H+1}}+\cdots = 1 \]

 つまり、無限小のレベルでも 0.999... の 9 が限りなく続く場合、 すなわち、無限の先の \(H\) 桁でも 9 が打ち止めにならず、限りなく続く場合は、 0.999... = 1 と解釈できるということです。 こちらの結果だけは、正式な超準解析でも認められているようです。