0.999...=1?

【はじめに】

 このページは 0.999... = 1 教の頑なな教えに一石を投じるために書かれました。 0.999... ≠ 1 ではないかと考える初心者に対して、 0.999... = 1 教を信仰する人々は、疑うな、0.999... = 1 は神のお告げである。 と称して数学者から見ると怪しげな証明を初心者に叩き込みます。 その結果、頑なな 0.999... = 1 教の信者が拡大再生産されていきます。 なんとも不毛なやり取りではないでしょうか?

 しかし、冷静に考えれば、0.999... ≠ 1 ではないかという疑問は、 もっともな疑問なのです。学校で習った数の順序を素直に適用するなら、 0.999... ≠ 1 という結果の方がむしろ自然です。 実際、解釈を工夫すれば 0.999... ≠ 1 は必ずしも間違いとは言えません。

 よく言われる、 9 を無限に並べれば 1 になるのだなどという説明は根拠のないデマです。 無限という表現を避けて正確に説明するなら (つまり、イプシロン-デルタ論法式に説明するなら) 必要に応じていくらでも多くの 9 を並べたとしても 1 にはなりません。 それだけではダメなのです。この点に関しては初心者の 0.999... ≠ 1 なのでは?という疑問の方が正しいと言えます。

 ところが、実数には 0.999... = 1 教の信者にも知られていない仕組みがあって (つまり、イプシロン-デルタ論法には同値類という仕組みがあって) その仕組みを適用すると 0.999... = 1 という結果が導かれるのです。 イメージとしては四捨五入に似ています。 ぶっちゃけ、0.999... なんてほとんど 1 なんだから 1 と見なそうぜ。 もっとアバウトに行こうよという感じでしょうか。 ただ、この仕組みは大学レベルの数学であるため、 おそらく、9割がたの人が 0.999... = 1 の本当の秘密を知りません。

 まだ納得できないという人は、高校数学で次のことを考えてみてください。 \[ f'(x) = \lim_{\Delta x\to 0}\frac{f(x+\Delta x)-f(x)}{\Delta x} \]  上記の微分の定義において、\(\Delta x\) は決して \(0\) ではありません。 もちろん、特定の固定された微小な実数でもありません。 すなわち、\(\lim\) の中は普通の実数の世界ではありません。 もし、\(\Delta x\) が \(0\) だとすると、 微分の定義は破綻してしまいます。\(0/0\) は不定なのですから。 つまり、\(\lim\) の中では、0 に限りなく近いが 0 ではない数を考えるのです。 ならば、1 に限りなく近いが 1 ではない数があったとしても不思議ではないでしょう? もちろん、大学レベルの数学ではイプシロン-デルタ論法に翻訳しますが、 \(\lim\) の中では 0.999... ≠ 1 であることに変わりはありません。 ただし、0.999... という表現に複数の解釈があり得るので注意してください。

 忘れてはならないのが \(\lim\) の中ではというところです。 \(\lim\) の外では同値類で丸められて無限小は 0 になります。 同様に、0.999... は 1 になります。 もっとアバウトに行こうよということです。 どうです。思い当たる節があるでしょう? 高校数学で基本的な微分の公式を求めるときに、 誰しもそういう計算をしたはずです。 何故、無限小を 0 とするのか深くは考えなかったでしょうけれど。

 どうでしょう。0.999... = 1 が神のお告げではないことが見えてきましたか? このページでは 0.999... = 1 の本当の秘密を白日の下に晒すことで、 0.999... = 1 教と 0.999... ≠ 1 教の人々が平和に共存できる道を探ります。 と意気込んだものの、どっちの信者からも敵視されちゃうかもね(笑)

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

 あなたも一度はこれを聞いて不思議に思ったことがあるはずです。 すなわち、「0.999... と 9 が無限に続く数は 1 である」と。 しかし、直感で考えると「0.999... < 1」ですよね? この直感は本当に間違っているのでしょうか。 ご安心ください。ここでは、この直感が必ずしも間違いとは言えないことを説明します。 ただし、説明には高校レベルの数式をたくさん使います。 数列とか\(\Sigma\)とか難しい話はいやだという人は 四捨五入と実数 をご覧ください。

 まず、「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}\) となることがあるわけです。 ただし、\(\displaystyle\sum^{\infty}_{n=0}\) とは厳密には \(\displaystyle\lim_{m\to\infty}\sum^m_{n=0}\) のことです。 この \(\lim\) が曲者なことは後で説明します。

 実際、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進表記で比較していることに起因するのでしょう。

 つまり、0.999... = 1 に疑問を感じる人は、 学校で習った辞書式順序をしっかりと使っているからこそ疑問を感じるのです。 実数の順序と辞書式順序が異なることって明示的には習いませんよね。 察しろ考えれば分かるだろみたいな感じで。 その一方で、0.333... = 1/3 で 0.333...×3 = 1 だから 0.999... = 1 などと、 根拠のハッキリしない証明を鵜呑みにしてしまう人もいます。それに比べたら、 0.999... = 1 に疑問を感じる人の方が、むしろ数学的センスはあると言えます。 今まで自分が習ってきたことでは、 うまく説明できない不思議なことが起こっているのですから、 何かがおかしいと感じ取る嗅覚がないと数学の道を歩むのには向きません。

 さて、他にも実数より精度の高い順序は存在します。 実数 \(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進表記や集合の包含関係を実数の代わりに使うことはできません。

【四捨五入と実数】

 ここでは、高校数学は難しいのでもっと簡単に説明してよという人のために、 別の角度からの説明を試みます。 四捨五入のアナロジーを使って、実数においては 0.999... = 1 が正しいことを説明し、 続いて、実数ではない数で考えると 0.999... ≠ 1 であることを説明します。

 まず、1.2 を四捨五入することを 《1.2》 と書くことにしましょう。 つまり、《1.2》 = 1 です。あるいは 《1.5》 = 2 ですね。 この書き方を使うと、《0.9》 = 《1》 という等式が成り立ちます。 同じようにして、《0.99》 = 《1》 であり、《0.999》 = 《1》 ですね。 すなわち、大まかに同じものは完全に同じと見なすということです。

 ところで、ご存じないかもしれませんが、専門的には、 実数はほとんど同じものは完全に同じと見なすという仕組みで作られています。 ここは、そういうものなんだと飲み込んでください。 なんとなく、上記の四捨五入の話に似てますよね。 実数のこの仕組みを 0.999... に適用することを [0.999...] と書くとします。 すると、[0.999...] = [1] という等式が成り立ちます。 0.999... と 1 はほとんど同じなので完全に同じと見なすわけです。 四捨五入と違うのは、 [0.9] ≠ [1] であり、[0.99] ≠ [1] であり、[0.999] ≠ [1] であるということです。 つまり、見分けがつかないくらいほとんど同じでないとダメということです。

 実は、実数の関係式は、いつもこの [ ] が付いた形で考えるのが正式な解釈です。 つまり、x と y という数があった場合、実数の関係式は [x] = [y] のように書くのが正式な書き方です。

 でも、いつもいつも [ ] を付けて書くなんて面倒くさいですよね。 そこで、数学ではよくあることなんですが、誤解の恐れがない限り、 [x] = [y] を x = y と書いてしまいましょうということになっているのです。 つまり、[0.999...] = [1] を 0.999... = 1 と書いてしまうのです。 いや、めっちゃ誤解の恐れがありますよねぇ。 いささか強引さを感じますけれど、 そういう習慣になっているので仕方がありません。 とにかく、これで 0.999... = 1 に納得していただけたと思います。

 さて、ここまで説明をぼかしてきましたが、 [ ] が付かない生の 0.999... は何を表しているのかという問題があります。 実のところ、いろいろ考えることができて、 10進表記とかコーシー列とか超実数とかいろいろあります。 そんなの分からないよという人は、 素人が素朴に考える実数モドキの数とでも思っておいてください。 大事なことは、生の 0.999... を考えると、 ほとんど同じものを完全に同じと見なすとは限らないので、 0.999... ≠ 1 となってもおかしくないということです。

 どうでしょう。絶対 0.999... ≠ 1 のはずなのに、 頭の良さそうな人が、いや 0.999... と 1 は完全に等しい。 と断言する理由がご理解いただけたでしょうか。 つまりは、[0.999...] と [1] は完全に等しいと言っているのですね。 要するに、 0.999... = 1 という式をどう解釈するのかという定義の問題だったわけです。

【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\) は \(\lim\) の中身を考えると \(0\) ではなく、 \(\lim\) によって無限小の差が丸められて \(0\) に見えているのです。 つまり、本来ならば無限小の誤差があるのかもしれないのです。

 0.999... は数列 (0.9, 0.99, 0.999, ...) の極限と考えることができ、 1 は数列 (1, 1, 1, ...) の極限と考えることができます。 よって、0.999... - 1 は \(\lim\) の中身まで考えると、 無限小の誤差があるのですが、丸められて 0.999... - 1 = 0 となっているのです。 0.999... = 1 となっても何も不思議ではないですね。 これで実数の精度が低い理由が分かったと思います。

 大学レベルの数学で説明すると、\(a,b\in X\) のときに (\(a-b=無限小\)) なら \(a\sim b\) と書いて \(a\) と \(b\) は限りなく近いと言うとするなら、 \(\sim\) は同値関係となり、 商集合 \(X/\sim\) が実数の集合と見なせるということです。 つまり、\(\sim\) を \(=\) と読み替え、 無限小を \(0\) と読み替えると実数と同じ構造の空間になります。 すると、\(X\) とは何ぞやということになりますが、 素人が素朴に考える実数モドキの集合とでもしておきましょう。 つまり、素人が実数と思っているもの \(X\) と、 数学者が実数と思っているもの \(X/\sim\) は別物で、 この違いを理解できない人が実数において 0.999... < 1 と頑なに主張することになるのでしょう。

【実数で、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\) である可能性を排除してしまうことになるので注意してください。 また、\(a = 1\) なら最も近いことは自明なので、 条件2. 3.は最も近い数が複数あり得るか?と暗に仮定しています。

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

\[ 任意の~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\) ということになります。 条件2.で \(1\) に最も近い数が複数あり得るか?と暗に仮定しましたが、 結局、\(1\) に最も近い数は \(1\) のみだったということです。

 つまり、全順序な数体が稠密性を満たすならば、 必然的に 0.999... = 1 になるということです。 0.999... = 1 の秘密は実数や有理数の稠密性にあったんですね。 したがって、もし考えている数が稠密性を満たさないならば、 0.999... < 1 となってもおかしくないということです。 10進表記などは正に稠密ではありません。

【稠密性】

 上記の証明より、 0.999... = 1 が成り立つには稠密性が重要な役割を果たしていることが分かりました。 ここでは、もう少し稠密性について掘り下げてみましょう。 念のため、稠密性をもう一度説明しておくと、 \(x \lt y\) を満たす2つの数の間には、\(x \lt z \lt y\) を満たす数 \(z\) が必ず存在するという性質です。

 はじめに、実数はなぜ稠密になるのかご存じでしょうか? 実数を定義する公理には、体と順序の公理に加えて、 次のような性質が公理として挙げられています。

  1. \(x \lt y~\Rightarrow~x + c \lt y + c\)
  2. \(x \lt y~かつ~c \gt 0~\Rightarrow~cx \lt cy\)

 ただし、\(x,y,c\) は任意の実数とします。残る公理はデデキントの切断ですね。

 性質1. 2.は、どちらも我々が実数の計算をするときによく使う基本的な性質です。 これが成り立たないと、ほとんど計算らしい計算はできないと言ってもいいでしょう。 この性質から、以下のようにして稠密性が導かれます。

 まず、性質1.より、 \[ x \lt y~\Rightarrow~x + x \lt x + y \lt y + y \]  次に、性質2.より、 \[ x \lt y~\Rightarrow~\frac{x + x}{2} \lt \frac{x + y}{2} \lt \frac{y + y}{2} \]  つまり、 \[ x \lt y~\Rightarrow~x \lt \frac{x + y}{2} \lt y \]  となり、実数が稠密であることが分かります。

 このことから分かるのは、素人が実数を独自解釈して特殊な数を考え出したとしても、 普通の計算法則を満たす限りは稠密性からは逃れられず、 ほぼ間違いなく 0.999... = 1 になるということです。 0.999... = 1 を否定したいのなら、0.999... の解釈を変更するか、 四則演算をあきらめるくらいのことをしないとうまくはいきません。

 さらに、稠密性は実数の精度を落とす原因にもなっています。 最も精度の高い順序では、隣り合う点がピッタリとくっついている必要があります。 つまり、隣り合う点の間には他の点は存在しません。 例えば10進表記は正にそのような構造をしています。 10進表記では、0.999... < 1 ですが、 0.999... と 1 の間には他の点は存在しません。 まあ、隣り合うのだから当然ですけど。 10進表記の精度が実数よりも高いのは稠密性が成り立たないからです。

 このことから、単純な無限列つまり生の 0.999... 等の集まりでは、 稠密性は実現できないことが分かります。よって、 単純な無限列を同値類に分類するのような操作をしないと稠密性は実現できません。 しかし、0.999... = 1 を主張する人の多くがそこには触れません。 これが、0.999... = 1 が理解されにくい一因になっています。

 これは私の推測ですが、同値類を使って実数の稠密性を実現することは、 \(\lim\) の計算の精度を決めることにもなっていると思います。 稠密性から 0.999... = 1 が導かれることが、 \(\lim\) の振る舞いを規定することになっていると思います。

 さて、締めくくりに稠密性と図形の関係に触れておきましょう。 稠密性を導いた性質1.と性質2.は、図形の平行移動と拡大縮小に関係する公理です。 つまり実数とは、 図形的直観を自然に表現できるよう絶妙にデザインされた数なのです。 0.999... = 1 はそうした図形的直観と深く結びついた性質なのですね。 興味のある人はルベーグ積分など測度の話を調べてみると面白いですよ。 例えば、0.999... 等の表記も一種の図形と見なすことができます。 なので、実数の精度が低いのは零集合と関係していると私は思っています。

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

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

 0.999... < 1 派の人の思い込みを分析してみると、 0.999... の解釈の仕方が複数あることが見えてきます。 そして、0.999... = 1 派の人は1つの解釈のみを正しいとして譲らないため、 議論が嚙み合わなくなって平行線に終わるというやり取りを繰り返しているようです。 そういうわけで、 以下では、0.999... の解釈がどんな構造を取り得るのかを見ていきましょう。

 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~は無限小数 \] ということになります。また、\(S\) の全ての要素 \(x\) について \(x \lt 1\) かどうかは意見が分かれる所ですが、 \(x \le 1\) であることには議論の余地はないでしょう。すると、 \[ x \le 1 ~\Leftrightarrow~ 9x \le 9 ~\Leftrightarrow~ 10x \le x + 9 ~\Leftrightarrow~ x \ge 10x - 9 \] となり、 \(S\) の全ての要素 \(x\) において \(x \ge f(x)\) となります。 したがって最終的には、 \[ x = f(x)~\Rightarrow~x~は無限小数 \] が成り立ちます。 よってこれを \(a\) が無限に長いことの定義にしてしまいましょう。 つまり、\(a = 0.999\ldots\) が無限に長いとは、 \[ a = f(a) \] が成り立つことであると。実際、数学的に厳密な計算とは言えませんが、 \[ f(a)=9.999\ldots - 9 = 0.999\ldots = 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 があるような数のことを非アルキメデス順序体と言います。 実数を拡張して無限大や無限小を扱えるようにした超実数がその代表例です。

 このように、無限小数の無限の意味は実は二通りあります。 一つは、最後の 9 という概念が無い無限です。 もう一つは、9 は無限に続いているけれど最後の 9 という概念がある無限です。 前者は本当に無制限という意味で無限の中の無限とでも言えばよいでしょうか。 後者は無限だけれども制限があるという意味で無限の中の有限と言えます。 0.999... = 1 に納得がいかない人が後を絶たないのは、 こういう事情があるからなんでしょうね。

【デデキントの切断】

 もう一つ、実数の場合に 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.999...=1\) の典型的な証明を紹介しておきましょう。 この方法は、厳密には正しい証明ではありませんが、 \(0.999...\) を無限等比級数と見なした上で、 極限の線形性を用いることで正当化することが可能です。

\[ \begin{eqnarray} x & = & 0.999\ldots\\ 10x & = & 9.999\ldots\\ 10x - x & = & 9.999\ldots - 0.999\ldots\\ 9x & = & 9\\ x & = & 1 \end{eqnarray} \]

 この証明には問題があります。 上記の証明には無限に続く数の掛け算や引き算が、 何のためらいもなく使われています。無限に続く数の四則演算が、 有限な数の四則演算と同じような結果になる保障など何処にもありません。 そもそも、無限に続く数の四則演算が可能なのかすら怪しいです。 では、上記の証明は全くのデタラメなのでしょうか? 実は、\(0.999...\) を以下のような等比級数の極限と解釈すれば正しい証明になります。

\[ S_n=\frac{9}{10}+\frac{9}{10^2}+\cdots+\frac{9}{10^n} \] \[ 0.999... = \lim_{n\to\infty}S_n \]

 \(0.999...\) を極限と解釈すると極限の線型性が使えるようになります。 つまり、\(a_n, b_n\) が収束する時、\(\alpha a_n + \beta b_n\) も収束して以下の等式が成り立ちます。

\[ \lim_{n\to\infty}(\alpha a_n + \beta b_n) = \alpha(\lim_{n\to\infty}a_n) + \beta(\lim_{n\to\infty}b_n) \]

 そして、\(S_n=1-\frac{1}{10^n}\) であることが証明できるので、 \(S_n\) は単調増加であり、任意の \(n\) に対して \(S_n\lt 1\) となります。 つまり、\(S_n\) は何らかの値に収束することになります。 よって、極限の線型性を使うことができ、 上記の \(0.999...=1\) の証明が正当化できて以下のようになります。

\[ \begin{eqnarray} x & = & \lim_{n\to\infty}\frac{9}{10} + \frac{9}{10^2} + \cdots + \frac{9}{10^n}\\ 10x & = & \lim_{n\to\infty}9 + \frac{9}{10} + \cdots + \frac{9}{10^{n-1}}\\ 10x - x & = & \lim_{n\to\infty}9 - \frac{9}{10^n}\\ 9x & = & 9\lim_{n\to\infty}1 - \frac{1}{10^n}\\ x & = & \lim_{n\to\infty}1 - \frac{1}{10^n}\\ x & = & 1 \end{eqnarray} \]

 無限等比級数による \(0.999...=1\) の証明は、 \(0.999...\) を等比級数の極限と解釈した上で、 イプシロン-デルタ論法により、 極限の線型性を証明しないと本当は十分ではないわけです。

 ところで、上記の証明の正当化をよく見ると、最後の結果の一歩手前が \(\displaystyle x=\lim_{n\to\infty}1-\frac{1}{10^n}\) となっています。 そして実数では \(\displaystyle\lim_{n\to\infty}\frac{1}{10^n}=0\) なので最後の結果が \(x=1\) となっていることが分かります。 これに限らず、

\[ 1 = \lim_{n\to\infty}1-\frac{1}{2^n} = \lim_{n\to\infty}1+\frac{1}{n} = \lim_{n\to\infty}1-\frac{1}{n^2} = \cdots \]

 などなど、\(\lim\) の中に細かい構造があったとしても無視され、 まるで四捨五入でもするかの如く丸められて \(1\) になってしまいます。 この \(\lim\) の四捨五入のような性質のおかげで、 実数の世界に無限小が漏れ出してくるのが防がれています。 無限大の方は発散するという扱いで切り抜けます。

 一方で、\(\lim\) の中の話を考えると、そこは特別な空間になっていて、 無限大や無限小を実数のように扱うことができます。 もちろん、最終的にはイプシロン-デルタ論法に翻訳して考えるのですが、 直観的に解釈すれば、 \(\displaystyle\left(1-\frac{1}{10^n}\right)_{n\to\infty}\) は \(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...3 < 1/3 でしかありません。 皆さんも、必ず有限桁で計算をやめるでしょ? つまり、0.333... = 1/3 である保証は筆算では得られないのです。 ここは是非慎重に考えていただきたい。 筆算の結果が正しくなる保証があるのは割り切れるときのみです。 割り切れないとき無限に計算を続ければ正しい結果になるかどうかは、 筆算だけでは確認のしようがありません。 何故って、0.333... × 3 を筆算では計算できないからです。

 え?筆算では計算できないけど、繰り上がりがないから 0.999... に決まってるって? まあ、それは認めても良いですけど、 それって、0.333... = 1/3 の証明にはなってないですよね。 だって、0.999... = 1 はまだ証明されてないのですから。 どうでしょう。何となく問題の構造が見えてきましたか?

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

 ちなみに、0.333... を分数に直せば 0.333... = 1/3 を正しく証明できますが、その計算過程は、既に説明した 無限等比級数による証明 すなわち、0.999... = 1 の証明そのものです。これでは、 0.333... = 1/3 を用いて 0.999... = 1 を証明する意味がありませんよね。

 もちろん、0.999... = 1 の通俗的な証明の全てがデタラメや詐欺というわけではありません。 無限等比級数の性質を使った証明は、 厳密さには問題があるとしても大筋において正しいものです。 循環小数を分数に直す方法としても用いられていますよね。 イプシロン-デルタ論法による収束の概念も、無理のない形で暗に織り込まれています。 0.999... × 10 = 9.999... がそれです。 0.999... = 1 に手っ取り早く納得したいなら、 無限等比級数を使った証明で納得しておくのが無難です。

【1 - 0.999... = 0.000... は正しい?】

 もう一つ、ありがちな 1 = 0.999... の証明の問題点を指摘しておきましょう。 その証明はこんな感じです。 1 と 0.999... の差を計算すると 0.000... となって、 いつまでも 0 しか出てこないので、0.000... = 0 である。 よって、1 - 0.999... = 0 となり、移項すると 1 = 0.999... である。 しかしこの証明、こう反論されるとぐうの音も出ません。 0 が無限に続いた果てに 1 が出てくるのではないか。 確かに、0.999... の 9 は無限に続くと言っているのですから、 0 も無限に続かないと話が合いません。1 が出てくるとするならその後ですね。 0 しか出てこないように見えるのは、0 の数が無限だからかもしれません。

 この証明は、 暗黙の裡に 1 が出てくるなら 1 の前には 0 は有限個しか続かないと仮定しています。 すると、0.999... の 9 も有限個だからおかしいというわけですね。 この仮定は実数では正しいのですが、 今考えている数が実数であることに言及しない人が非常に多いです。 実数のこのような性質をアルキメデスの性質と言います。 アルキメデスの性質を説明しないと、 1 の前に 0 が無限に続くのではと言う人を納得させるのは難しいでしょう。 アルキメデスの性質とは、実数では \[ \lim_{n\to\infty}\frac{1}{10^n} = 0 \] となるということです。しかし、それなら始めから \[ 0.999\ldots=\lim_{n\to\infty}1-\frac{1}{10^n} = 1 \] と説明する方が誤解が少ないのではないでしょうか。 どのみち、納得させようとして正確な話をすれば、 極限の話をしなければならないのですから。

 そういう意味では、無限等比級数を使って証明する方法も同じ問題を抱えていますが、 0.999... を 10 倍すると 9.999... になることを認めないという人は、 相当重症の猛者でしょうね。

【驚愕の ...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 と解釈できるということです。 こちらの結果だけは、正式な超準解析でも認められているようです。

【極限の誤解と 0.999...】

 実数の極限を誤解している人に極限のことを説明するのに、 数列 \(\{a_n\}\) の極限値のことを、 たどり着いた値ではなく目指す先の値であると説明しているのをよく見かけます。 例えば、0.999... は 0.9, 0.99, 0.999, ... の極限であり目指す先は 1 であると。 私も、そのように考えていたのですが、 最近になって、この説明では確かに分かり難いかもと思うようになりました。

 目指す先と言うからには、 何事もなく順調に進めば何れは極限値に到達すると感じます。 もし、順調に進んでも到達できないのであれば、 何を根拠として目指す先と言っているのかという疑問がわきます。 常識的に考えれば、 到達できる可能性がわずかでもあるからこそ目指す先と言えるのであって、 決して到達できないことが分かっている場合、 その方法は「目指す先」を目指しているとは言えないでしょう。 たどり着かない方法を目指す方法というのは、よく考えると不自然です。 その「目指す先」は本当に目指す先でしょうか? 日常的文脈なら、 決してたどり着かないけれど気持ちとしては目指しているというのもありでしょうが、 数学の文脈で、気持ちとしては目指しているでは根拠にならないでしょう。 それに、目指す先が無理数だった場合、無理数の存在をどう保証するのか? ということにもなりますよね?

 そもそも、0.999... と 1 が等しくないと思う人にとっては、 目指す先とは 1 ではなく 0.999... そのものでしょう。 そして、単調増加で上に有界な数列の場合、 まさしく、順調に進んでも決して極限値にはたどり着きません。 例えるなら、山のあなたになお遠く幸い住むと人の言う。と言ったところでしょうか。 数学に詳しくない人が聞いたら、 極限値とは何やら妖しげな桃源郷のようなものかと思われるかもしれません。

 つまり、物理的に考えれば、 0.999... と 9 が無限に続いた数すなわち無限小数などというものは本来は存在せず、 到達できない数であるにもかかわらず、 あたかも 9 を並べ終えたかのように目標地点に設定しているところに、 そもそもの無理があるのでしょう。 0.999... = 1 という式は 「存在しない数」 = 1 ということになり、 問自体がナンセンスなのです。正に桃源郷です。 そのため、極限値はたどり着いた値ではなく目指す先の値ということにしてお茶を濁しているのでしょう。 1 の場合は有理数なので、目指す先の値ということにしておけば何とか誤魔化せます。 無理数の場合、目指す先が無限小数にならざるを得ず、桃源郷を探す羽目になります。

 また、より巧妙な言い方に極限値とは近づく先のことだというものがあります。 距離を定義したところに工夫が見られます。 要するに、典型的なケースでは極限値に到達することをあきらめるのですね。 しかし、最終的に1つの値に到達しないのだとすると、 近づく先が複数あるんじゃないの?とか、 近づく先が固定されてないのでは?とか、 近づく先とはそのコーシー列自身しかないのでは?という疑問がわきます。 これは、有理数列の極限値で無理数を定義するときに困ったことになります。 つまり、近づく先ではあっても一意性が保証された目指す先ではないのかもしれない。 0.999... = 1 のような議論をするには近づく先だけでは不十分ですね。

 実際には、 実数の極限値とはコーシー列を限りなく近いという関係を使って同値類に分類したとき、 \(\{a_n\}\) を代表元とする1つの類のことであって、 厳密に言えば目指す先のことではありません。というか、 この同値類が定義できてはじめて「目指す先」と見なすことが可能になります。 何を根拠として目指す先と言っているのか答えられるようになるということです。 ひょっとしたら、多少遠回りでもコーシー列や同値類という考え方を説明する方が、 どうしても 0.999... = 1 に納得できないという人には有効かもしれません。

 例えば、こんな説明が可能でしょう。 表現 0.999... とは長さを自由に設定できる有理数列 x = (0.9, 0.99, 0.999, ...) のことであり、 表現 1 とは x と同じ長さの有理数列 y = (1, 1, 1, ...) のことである。 2つの数列の長さを好きなだけ長く取るとき、x と y の右端の数の大きさを互いにいくらでも近づけられる場合は同類という関係で分類すれば、 x と y は同じ同値類に属しているというのが、 実数における 0.999... = 1 の大まかな意味なわけです。 このとき、x と y の属する同値類を実数の 1 と定義し、 0.9, 0.99, 0.999, ... の目指す先はその同値類と定義します。 そう、「目指す先」の意味を新たに定義し直し、 無限小数に有限的な解釈を与えるわけです。 厳密には、同値類を導く同値関係がきちんと成立するか確かめる必要はありますが、 それをクリアすれば、目指す先の一意性も保証できます。 でも、まあ、これでもきっと分からないと言われそうだな。

 ちなみに、これら同値類を実数として使うためには、 さらに同値類間に整合的な四則演算が定義できるか確かめる必要もあります。

 ところで、上記の「目指す先」の定義が何故妥当なのかというと、 以下のように考えられるからです。 数列の長さを好きなだけ長く取れるとは、 事実上その長さを無限大と見ることに等しく、 x と y の右端の数の大きさを互いにいくらでも近づけられるとは、 2つの数の距離が無限小と見ることに等しい。 このとき、同じ同値類に属するとは、 無限小の誤差は無視して同じと見なすことなので、 0.9, 0.99, 0.999, ... は無限の先で極限値 1 に到達したと見なせます。 つまり、この解釈を使えば、 0.9, 0.99, 0.999, ... は 1 に決してたどり着かない数列ではなくなるのです。 もちろん、ここで言う無限大や無限小はあくまで仮想的な例え話です。 いわゆる実無限が存在するわけではありません。

 超準解析における極限の説明は、この点においても優れています。 超準解析には無限が存在するので、 \(H\) を任意の無限大超自然数、\(a\) を極限値の実数、 \(\varepsilon\) を無限小とするなら、 \(a_H = a + \varepsilon\) となるとき、 数列 \(\{a_n\}\) は \(a\) に収束すると考えます。 そう、超準解析では極限を誤差を含んだたどり着いた値と考えるわけですね。 これは、素人が 0.999... = 1 に抱く疑念、 つまり、0.999... は 1 に限りなく近いが 1 ではないのではないか、 という直観そのものであるところが興味深いですね。 ただし、無理数の存在は初めから認めてしまわないといけません。 まあ、超実数は実数の拡張なので当然と言えば当然ですが。

 最後に、同じ極限でも、実数より細かい構造を見ることができる集合の極限で 0.999... を考えるとどうなるかを紹介しておきましょう。 0 以上の実数 \(x\) に対して \([0,x]\) という閉区間が対応しているとします。 このとき、次のような実数の閉区間 \(A_n\) を考えます。

\[ A_n = [0,1-\frac{1}{10^n}] \]

 つまり、

\[ A_0 = [0,0],~A_1=[0,0.9],~A_2=[0,0.99],~A_3=[0,0.999],~\ldots \]

 となります。各 \(A_n\) は \(0\) から \(\displaystyle 1-\frac{1}{10^n}\) に至るパスになっていて、それぞれ実数 \(\displaystyle 1-\frac{1}{10^n}\) と対応しています。 つまり、\(0.99\leftrightarrow A_2\) であり、 \(0.999\leftrightarrow A_3\) であり、 \(0.999...\leftrightarrow A_{\infty}\) であるということです。 このとき、\(A_0\subset A_1\subset A_2\subset \ldots\) なので極限集合が存在して

\[ A_{\infty}=\lim_{n\to\infty} A_n = \bigcup_{n\in\mathbb{N}}A_n = [0,1) \]

 のようになり、何と \([0,1]\) にはなりません。半開区間の \([0,1)\) になります。

 要するに、実数より精度の高い実数の区間で 0.999... を考えると、 1 に対応する \([0,1]\) は目指していた先ではなかったということです。 目指していた先は半開区間の \([0,1)\) であり、 0.999... の極限値とされる 1 にはギリギリ届きません。 まあ、どちらの区間も実数の精度で見ると長さ 1 の区間ではあるんですけどね。 ただし、 集合の極限を目指す先の値と解釈するのが妥当かどうかは私には分かりません。

 このような状況も、素人が 0.999... は 1 よりわずかに小さいのではないか? と考えてしまう原因になっているのでしょうね。