1 ≠ 0.999… ? 義務教育を振り返り
ここまでは無限小数と 0.999… とは何かを考察してきました. そこでは 1 = 0.999… であるということを証明したわけですが, では 1 と 0.999… が異なるものだという考えはどこから来るものなのでしょうか. ここからは学校で算数や数学をどのように学ぶのかを振り返り, どのようにその考えに至るのかを考察していきたいです. ただここから先は筆者の推測での話であるということ, 手元に小中学校の教科書があるわけでもないのでそれらがどのようなものであったかをあいまいな記憶で思い出しながら記述することを承知いただいたうえでお読みください.
まず 1 と 0.999… が異なるものであるというのはどこから来る考えなのでしょうか. おそらく 1 と 0.999… が異なるものだと主張している人のうち, 1 < 0.999… だと主張している人はほとんどいないでしょう, 少なくとも自分は見たことがないです. 従って 1 ≠ 0.999… と考えるほとんどの人は 1 > 0.999… だと考えているわけです. 上の位から比較したときに 1 の位がそれぞれ 1 と 0 でありますし, 妥当性のある考え方とも思えます. 実際, 具体的に与えられた自然数の大小を比較するとき次のようなステップを踏む方も多いのではないでしょうか
(1) 二つの自然数の桁を比較する
(2) 桁が同じ場合, 上の位から順に数字を比較する
例えば 1234 と 1243 を比較する場合, 桁はともに 4 桁ですから上の位から順に数字を見ていき, 上から 3 つ目の位で初めて違いが生じます. 上から 3 つ目の位はそれぞれ 3 と 4 ですから 1234 < 1243 である, 等々. 少なくとも自然数の枠組みではこのような桁の数や位の数による比較が可能になっています.
話は飛んで, 無限小数について考えていきます. おそらくこの概念が初めて登場するのは何年生かはわからないですが, 割り算の筆算で, いつまでたっても割り切れない数に出会ったときでしょう. 例えば 12/99 では
12 = 0*99 + 12
12*10 = 1*99 + 21
21*10 = 2*99 + 12
12*10 = 1*99 + 21
21*10 = 2*99 + 12
…
このようにしていつまでも割り切れないわけですがこれを 0.121212… というように書くと習った気がします. 一般には自然数 x, y に対して x/y の筆算の操作は
x = q(0)*y + r(0) (0 ≦ r(0) < y)
r(0)*10 = q(1)*y + r(1) (0 ≦ r(1) < y)
r(1)*10 = q(2)*y + r(2) (0 ≦ r(2) < y)
…
r(n-1)*10 = q(n)*y + r(n) (0 ≦ r(n) < y)
…
という操作を r(n) が 0 になるまで実行します. i < j で 0 < r(i) = r(j) となるものが存在すればこの操作はいつまでたっても終わらず, r(n), q(n) は周期性を持ちます.
ここで重要なのがこの循環小数の解釈です. 自分はこの循環小数に対して(自然数や有限小数の比較の延長として)漠然と 0.12… という数は
0.1 < 0.12… < 0.2
0.12 < 0.12… < 0.13
0.121 < 0.12… < 0.122
0.1212 < 0.12… < 0.1213
…
といった性質を満たす数なのだろうと当時考えていたと思います. ところがそういった数としての説明は受けた記憶がありません(自分が聞いていなかっただけの可能性もあります). もし数値としての意味を離れ, 循環小数のことを単に割り算の筆算によって得られた数字の列であってそれを
12/99 = 0.1212…
といった風に書き記すのだ, とだけ理解してしまった場合は悲惨でしょう.
ここからは循環小数の計算について考えます. ここで述べるのは中学校で習う 10^n を循環小数にかけることによって位をずらすことによってもとの分数を求めるというもので, 手法自体は前のページでもすでに用いました. いくつか例を挙げます.
x = 0.333… とすると 10 をかけて 10*x = 3.333…. 差をとると無限に続く部分が消えて
10*x - x = 3
9*x = 3
x = 1/3.
x = 0.142857142857… とすると循環節の長さは 6 だから 10^6 をかけて (10^6)*x = 142857.142857…. 差をとると
999999*x = 142857
x = 1/7.
こうして小学校のときに習った循環小数というのは, (手法の正当性はともかくとして)簡単な計算によってもとの分数に復元できる, ということを学習します. ここで満を持して登場するのが 0.999… です. 上記の手法を用いれば x = 0.999… とおいて
10*x - x = 9
x = 1.
となってどうやら 0.999… = 1 が成り立つようだということを習います……. しかしこの 0.999… というのは何ものでしょうか. そもそも循環小数というのは小学校で習ったところによると割り算の筆算の操作によって生じるものであったはずです. では上記の割り算の操作によって x/y = 0.999… となるような自然数 x, y が存在するか考えてみましょう(もっとも, 直感的には存在するとは思えませんが).
x ≧ y のとき x = q(0)*y + r(0), 0 ≦ r(0) < y とすると
q(0)*y = x - r(0) > x - y ≧ 0.
従ってどうやら x ≧ y のときは q(0) > 0, つまり x/y = q(0).q(1)q(2)… という表記において q(0) は 0 ではないようです.
x < y のとき ((y - x) + x)/y = 1 より
x/y = 1 - (y - x)/y.
今 0 < (y - x)/y < 1 ですから, (y - x)/y に対して筆算の操作を実行すると 0 でない位が存在します. その位を n 位とし, その位の数を q(n) とすれば 0 < q(n)/(10^n) ≦ (y - x)/y ですから
x/y ≦ 1 - q(n)/(10^n) = 0.999…9(10-q(n))
が成り立ちます. 従って x/y の筆算の操作において n+1 位までに少なくとも 1 つは 9 ではない項が存在します.
以上より筆算の操作によって x/y = 0.999… となる自然数 x, y は存在しないようです. 循環小数というのを小学校で習ったように, 筆算がいつまでたっても終わらないものであるととらえていた場合, 0.999… に拒絶反応が出るのも当然といえるでしょう. 9 が循環してはいるものの, 小学校で習った立場からは 0.999… はそもそも循環小数という分類の中に含まれていないのです. 従って無限小数について学習するとき, "小数点以下が無限に続く"という言葉の意味には一層注意を払わなければならない……のではありますが, 生徒の側がそれを行うのは困難である可能性もあります. そう考えるとこの問題は指導者の側に端を発した問題であって, 無限小数の扱いをおざなりにしたことで 0.999… < 1 論が生じているように私には思えます.
ところで 0.999… は有限のところで打ち切った時に常に 0.999…9 < 1 であるから 0.999… < 1 だ, というような主張をする人もいます(もちろん, 任意の n に対して a(n) < c であっても lim a(n) = c は起こりえますから, 無限小数を前ページのように数列の極限値として定義しているならばこのような論証は誤りです). そのような理屈の上だと他の(0 だけが無限に続くものではない)循環小数も途中で打ち切るともとの値よりも真に小さくなるから
1/3 > 0.333…
1/6 > 0.166…
1/7 > 0.1428571…
等といったことが成り立つわけですが, こういった主張は見られないです. この主張においては筆算の操作によって求まる数列かどうかというのが考察において大きなウエイトを占めているのではないかと思えます. すなわち 1/3 の筆算によって 0.333… という列を得るから"考えるまでもなく"両者は等しい, 一方で 1 から 0.999… という列は得られないから別の指標(無限小数の部分列 0.999…9 が真に 1 より小さいことなど)によって比べようとすることによってこの勘違いは生じてしまうのでしょう.
これは余談ですが, 仮に辞書式にすべての列に順序をつけた場合, 0.999… < 1.000… の間に列が存在しないため, これは実数全体とは異なった構造を持つ集合となってしまいますね. (x, y が異なる実数ならば x と y の間に実数が存在する, たとえば (x+y)/2 など)