このサイトは、ほんの入り口です

ここにあるのは、だれかが実際に調べ、考え、作ってきたことを集めたメモです。気になったら、ページの下の「参考にした情報源」から、もとの本や記事、それを生み出した人たちに、直接ふれてみてください。このメモには書ききれないおもしろさが、そこにあります。

3÷0と 0÷0は、どちらも われないのに なにが ちがうの?

3÷0と0÷0は、同じ「割れない」でも何が違うのか ── 0.999…=1と比べる

ゼロ除算はなぜ定義できないのか ── 3÷0と0÷0の区別と、0.999…=1の根拠(極限・等比級数)

分野:歴史・文化

3÷0 と 0÷0 は、どちらも「われない」計算です。でも、われない わけは ちがいます。3÷0 は、答えが ひとつも ありません。0÷0 は、答えが ありすぎて、ひとつに きまりません。

ところが 0.999… という数は、1と おなじ 数だと きまります。「われない」と「おなじ」は、どんな かんがえから でてくるのでしょうか。かけ算を ぎゃくに たどると、どちらも わかります。

3÷0 と 0÷0 は、同じ「割れない」計算でも、割れない理由がちがいます。3÷0 は答えが一つもなく、0÷0 は答えが多すぎて一つに決まりません。ところが、小数点の後ろに9が無限に続く 0.999… は、1とまったく同じ値だと決まります。

「割れない」と「同じ」。正反対に見えるこの2つは、どんな考え方から出てくるのでしょうか。割り算の意味に戻ると、どちらも「かけ算を逆にたどる」という同じ決まりから説明できます。

0で割る式には、「解がない」場合と「解が無数にある」場合の2種類があり、割れない理由が異なる。一方、9が無限に続く 0.999… は、1と等しい値になる。

前者は割り算の定義から、後者は極限と実数の定義から説明できる。では、なぜ「無限大」と答えてはいけないのか。なぜ「1に限りなく近い」ではなく「1に等しい」と言えるのか。この2つの問いの答えが分かります。

読み方を切り替えられます。画面の上にある「よみかた」のボタンで、小学校低学年むけ・小学校高学年むけ・中学生むけの3つの書き方に切り替わります。むずかしいと思ったら、いつでもやさしい方に戻ってください。選んだ読み方はブラウザが覚えているので、次に別の記事を開いたときも同じ読み方で始まります。

1. わりざんは、かけ算の ぎゃくむき

1. 割り算は「かけ算を逆にたどる」計算

1. 割り算は、かけ算を逆向きにたどる操作である

電卓でんたくで 3÷0 を おしてみると、ふつうの 数ではなく、エラーの ひょうじが でる ことが あります。どうして なのでしょう。

まず、割わり算が なにを して いるのか、かんがえて みます。12÷3 は、「3に なにを かけたら 12に なるかな」と さがす ことです。こたえは 4です。

つまり、割わり算は、かけ算を ぎゃくむきに たどる ことです。さがす 数は、ちょうど ひとつ あるのが きまりです。

では、0で 割わろうと すると、この きまりは どうなるのでしょう。

電卓で 3÷0 を押すと、数ではなくエラーの表示になることがあります。故障ではなく、この式に答えを決められないからです。理由を知るには、割り算がそもそも何をしているのかに戻る必要があります。

数学では、割り算 a÷b は「bをかけるとaになる数cが、ちょうど1つあるときの、そのc」と決められています[1]。12÷3 なら、3にかけて12になる数を探す作業で、答えは4です。割り算は、かけ算を逆向きにたどる計算だといえます。

ここで大事なのは「ちょうど1つ」という条件です。探している数が一つもなくても、たくさんあっても、割り算としては成り立ちません。では、bが0のとき、この条件はどうなるのでしょうか。

電卓で 3÷0 を押すと、数ではなくエラーの表示になる場合がある。壊れたのではなく、この式に答えを定められないからだ。その理由は、割り算の定義まで戻ると見えてくる。

割り算 a÷b は、「bをかけるとaになる数cが、ちょうど1つ存在するとき、そのc」と定義される[1]。たとえば 12÷3 は「3×□=12」の□を探す操作で、□=4 と決まる。割り算は、かけ算の逆演算として組み立てられている。

この定義では、「ちょうど1つ」という条件が決定的に効く。□が存在しなくても、複数あっても、a÷b は定まらない。では、b=0 のとき、この条件はどう破れるのか。実は、aが0かどうかで、破れ方が2通りに分かれる。

2. 3÷0 と 0÷0、「われない」わけが ちがう

2. 3÷0は「答えがない」、0÷0は「答えが多すぎる」

2. 3÷0は「解なし」、0÷0は「解が無数」――破れ方が2通りある

3÷0 を、かけ算で かんがえます。「0に なにを かけたら 3に なるかな」。

0に どんな 数を かけても、こたえは 0です。3には なりません。だから、あてはまる 数は ひとつも ありません。

つぎに 0÷0 です。「0に なにを かけたら 0に なるかな」。

1でも、100でも、どんな 数でも、0を かければ 0です。あてはまる 数が ありすぎて、ひとつに きめられません。

「ひとつも ない」と「ありすぎる」。どちらも「ちょうど ひとつ」では ないので、割われないのです。こたえを きめたい人は、ここで 「じゃあ、無限むげん大と こたえたら?」と おもうかも しれません。

3÷0 を、かけ算に直して考えます。「0にかけて3になる数は何か」という問いです。0にどんな数をかけても答えは0で、3にはなりません。あてはまる数が一つもないので、3÷0 には答えがありません[2]。英語版の百科事典にも、同じ説明があります[3]。

では 0÷0 はどうでしょう。「0にかけて0になる数は何か」という問いです。1でも100でも、どんな数でも、0をかければ0です。あてはまる数が無数にあり、一つに決まりません[2]。

つまり、0で割れない理由は一つではありません。「答えが一つもない」場合と、「答えが多すぎる」場合があります。どちらも「ちょうど1つ」を満たさないので、割り算は成り立ちません。

ここで、「それなら、答えは無限大にすればいいのでは」と考える人もいるでしょう。次は、この考えを確かめます。

b=0 のとき、a÷0 は「0×□=a」の□を探す問題になる。0にどんな数をかけても0だから、aが0でなければ、この式を満たす□は存在しない。つまり解なしである。aが0のときは、0×□=0 を満たす□が任意の数になり、解が無数にあって一意に定まらない[2]。英語版の記述も同じ内容である[3]。

ここが要点で、3÷0 と 0÷0 は、同じ「割れない」でも原因が異なる。前者は条件の「存在」が破れ、後者は「ちょうど1つ」の「1つ」が破れている。したがって、「0で割れない」を一言で片づけると、この区別が消えてしまう。

ところで、1÷xの値は、xを小さくするほど大きくなる。それなら、「3÷0=無限大」と定めればよいのではないか。この考えは自然だが、どこが危ういのかを次に確かめる。

3. 「むげんだい」と こたえては いけないの?

3. 「無限大」と答えてはいけないのはなぜか

3. 「無限大」は数ではなく、近づき方の言い方である

1÷0.1 は 10、1÷0.01 は 100、1÷0.001 は 1000。0に ちかい 数で 割わるほど、こたえは どんどん おおきく なります。

3÷0.1 や 3÷0.01 でも、おなじように どんどん おおきく なります。だから「0で 割わったら、無限むげん大」と おもいたく なります。でも、ここに わなが あります。

0の 向こうがわから ちかづくと、はなしが かわります。マイナスの 小さい 数で 1や 3を 割わると、こたえは マイナスで、どんどん 小さく なります。プラスから ちかづくか、マイナスから ちかづくかで、むかう さきが ぎゃくに なるのです。

だから「無限むげん大」は、ひとつの 数の 名まえでは ありません。「むかっていく ようす」を いう ことばです。

1÷0.1 は10、1÷0.01 は100、1÷0.001 は1000です。0に近い数で割るほど、答えはどんどん大きくなります。だから「0で割ったら無限大」と言いたくなります。

ところが、近づき方には2通りあります。0より大きい側から近づくと、1÷xは限りなく大きくなります。0より小さい側(負の数)から近づくと、1÷xは負の方向に限りなく小さくなります。分子が3の 3÷x でも、0の右と左で正負が反対になるのは同じです。向かう先が正反対なので、「3÷0はこの値だ」とは決められません。

数学の式では、xが0より大きい側から0に近づくとき 1/x は +∞ に向かう、と書きます。これは 1÷0 を∞と定めたわけではなく、近づくときの様子を言い表したものです[2]。無限大は、ふつうの数の1つではなく、向かう先を指す言い方だと考えられています。

昔の人も、0で割る計算を考えていました。インドのブラーマグプタは628年ごろの著作で、ゼロや負の数の計算の決まりを、体系的に示した最初の人の一人とされます。0÷0は0としましたが、これは後に誤りとされました。正の数や負の数を0で割った結果は、「分母が0の分数」と呼んでいます[4]。12世紀のバースカラ2世は、それを「無限大の量」と呼びました[3]。ただ、この呼び方にも矛盾が出ると指摘されています。

では、コンピュータは0で割る計算をどう扱っているのでしょうか。

x を正の側から0に近づけると 1/x は +∞ に向かい、負の側から近づけると −∞ に向かう。向かう先が逆だから、1/0 という一つの値は定められない(分子が3の 3/x でも、0の左右で正負が逆になる点は同じだ)。極限の記号 lim(x→0+) 1/x=+∞ は、「1/0=∞ と定義した」という意味ではなく、近づき方の記述にすぎない[2]。この点は、よくある誤解の一つだ。

歴史の上でも、この壁に挑んだ人がいる。インドのブラーマグプタは628年の著作『ブラーマスプタシッダーンタ』で、ゼロと負の数の計算規則を体系的に示した。0÷0 は0としたが、これは後に誤りとされた。ゼロでない数を0で割る場合は「分母が0の分数」と述べている[4]。これは、初めての試みとして読むのがよいだろう。

12世紀のバースカラ2世は、0で割った量を「無限大の量」と呼んだ(n÷0=∞)。ところが、これも ∞ と −∞ が等しくなるなどの矛盾を生むとされる[3]。定義を足して矛盾が出るなら、別の道を探すしかない。実際に、計算機の世界は「約束として扱う」道を選んだ。

4. コンピュータは 0で わって しまうの?

4. コンピュータは0で割ると、どうなるのか

4. 計算機は規格や言語の約束で0割を扱う

パソコンの 中でも、0で 割わる 計算は おきます。やりかたが きめて あります。

ある ことばでは、2÷0 の こたえが「無限むげん大」と でます。べつの ことばでは、「0で 割わりました」という エラーが でます。ことばに よって ちがうのです。

これは 「0で 割わっても いい」と 数学で きまった わけでは ありません。コンピュータの 中だけの 約束やくそくです。

コンピュータの計算にも、0で割る場面は出てきます。小数をあつかう計算の国際規格 IEEE 754 では、0でない数を0で割ると正負の無限大、0÷0 だと NaN(非数、「ナン」と読む。Not a Number の略)を返す、と決めています[3]。

ただし、これは数学で「定義した」のではなく、規格が結果をそう決めている、ということです。同じ計算でも、プログラミング言語によって結果が変わります。JavaScript では 2/0 が Infinity、2/-0 が -Infinity になります[5]。Python では、0で割ると ZeroDivisionError というエラーが起きます[6]。

数学の割り算は「答えを一つに決められるか」で考えました。コンピュータは規格や言語ごとの約束で、扱いを決めています。ものさしが違うので、数学の結論とコンピュータの結果が食いちがうことがあります。

ここまでは、「割れない」話でした。次は、見た目とちがって「同じ」になる数の話です。

浮動小数点数の規格 IEEE 754 は、0でない数を0で割れば ±∞、0÷0 なら NaN(Not a Number、「ナン」)を返すと定めている[3]。これは数学の定義ではなく、規格が結果をそう定めているのである。

実際、言語ごとに扱いが分かれる。JavaScript の通常の数では 2/0 は Infinity、2/-0 は -Infinity になる。一方、BigInt には無限大の概念がないので、0割は RangeError になる[5]。Python では、除算や剰余の第2引数が0だと ZeroDivisionError が発生する[6]。

数学が「答えを一意に決められるか」を基準にするのに対し、計算機は「処理を続けられるか」を基準にする。基準が違うため、数学の答えと計算機の表示は異なることがある。以上は「割れない」側の話だった。次に、見た目の印象と値が食いちがう、反対側の話に移る。

5. 0.999… は 1より ちょっと 小さい?

5. 0.999…は1より小さいのか、同じなのか

5. 1/3 を3倍すると何が起きるか

「0.999…」は、小数点の あとに 9が ずっと、おわりなく つづく 数です。1より ほんの すこし 小さく 見えませんか。

じつは この 数は、1と 同じ です[7]。

1÷3 を ひっさんで すると、0.333… と 3が いつまでも つづきます。つまり、1/3 は 0.333… です。

これを 3ばいに します。1/3 の 3ばいは 1です。0.333… の 3ばいは 0.999… です。おなじ 数を 3ばいした ものなので、0.999… と 1は おなじ 数だと いえます。

0.999… は、小数点の後ろに9が無限に続く数です。1よりほんの少し小さいように見えます。それでも、値は1と等しいとされています[7]。

いちばん手軽な確かめ方は、1/3 を使うものです。1÷3 を筆算すると、0.333… と3が終わりなく続きます。つまり 1/3=0.333… です。両辺を3倍すると、左は 1/3×3=1、右は 0.333…×3=0.999… になります。したがって 0.999…=1 です[7]。

もう一つ、別の道もあります。次の章で見てみましょう。

0.999… は、小数点以下に9が無限に続く数を表す書き方で、値は1に等しい[7]。最も手軽な説明は、1/3 を使うものだ。1÷3 を筆算すると 0.333… となる。この両辺を3倍すれば、左辺は 3×(1/3)=1、右辺は 3×0.333…=0.999… になる。したがって 0.999…=1 だ。

ただし、この説明には前提がある。0.333… のような無限小数にも、桁ごとの掛け算が通用すると仮定している点だ。納得しやすい道具ではあるが、厳密な証明になるには、実数の定義を土台にしなければならない。次に、別の説明を見る。

6. もうひとつの たしかめかた

6. 引き算で確かめる方法と、その弱点

6. 10倍して引く方法は、何を仮定しているか

もうひとつ、算数で たしかめる 方ほうが あります。

0.999… を「x」と よびます。10ばいすると、9.999… です。

そこから、はじめの x を ひきます。9.999… ひく 0.999… は 9です。10ばいの x から x を ひいたら、9ばいの x なので、9x=9。だから x は 1です。

どちらの たしかめかたも、「9が おわりなく つづく」ことを、ふつうの 数のように あつかって います。算数の とても べんりな かんがえかたです。

x=0.999… とおきます。10倍すると 10x=9.999… です。ここから元の x を引くと、右辺は 9.999…−0.999…=9、左辺は 10x−x=9x になります。9x=9 なので、x=1 です[8]。

この方法は、わかりやすい反面、弱点もあります。9が無限に続く数にも、有限の数と同じように桁ごとの計算ができると、最初から仮定しているからです。厳密には、実数をどう定義するかが土台になります。そのため、この説明は「証明」というより「納得するための道具」と考えるのがよいでしょう[8]。

では、厳密な言い方では、0.999… はどう説明されるのでしょうか。

x=0.999… とおくと 10x=9.999… で、辺々を引くと 9x=9、よって x=1 となる[8]。1/3 の説明と同様、無限小数に対しても桁ごとの演算が許されることを仮定している。これは「証明」というより、直感を確かめるための道具として読むのが妥当だろう。

実際、この仮定が成り立つかどうかは、実数の定義によって決まる。ここで、「0.999… は1に限りなく近づくが、届かないのではないか」という疑問が残る。この疑問に、極限の考え方で答える。

7. 「ちかづく」だけで、とどかないの?

7. 「1に近づくだけで、届かない」という見方をほどく

7. 「近づくが届かない」という見方と、極限・等比級数

「0.999… は 1に どんどん ちかづくけれど、ぴったりには ならない」と かんがえる 人が います。0.9、0.99、0.999 と 9を ふやして いく ようすを、おもいうかべるのでしょう。

でも 0.999… は、9を ふやして いく「とちゅう」の ことでは ありません。9が さいごまで ぜんぶ ならんだ あとの 数を、あらわして います。

0.9 と 1の ちがいは 0.1、0.99 と 1の ちがいは 0.01、0.999 と 1の ちがいは 0.001。9を ふやすほど、ちがいは 10ぶんの 1ずつ 小さく なります。「0より すこしだけ 大きい ちがい」は、どこにも のこりません。

ふつうの 数の 世界には、0より 大きくて、どんな 正の 数よりも 小さい「ふしぎな 数」は ありません[7]。だから ちがいは 0。0.999… と 1は おなじ 数です。

「0.999… は1に限りなく近づくが、届かない」と考える人は少なくないようです。それは、0.9、0.99、0.999 と9を増やしていく途中の数と、0.999… が表す数を、同じものと考えてしまうからでしょう。

ただ、0.999… という書き方が表しているのは、その数列 0.9、0.99、0.999、… が向かう先、つまり極限の値です。その値は1になります[8]。

式でも確かめられます。0.999… は 9/10+9/100+9/1000+… と書けます。最初の項が 9/10 で、次々に 1/10 をかけていく等比級数です。その和は (9/10)÷(1−1/10)=1 になります[7]。

この等しさは、ふつうの実数に「0より大きいのに、どんな正の実数よりも小さい数(無限小)」がないことと深く結びついています。超実数など、別の数の体系では別の扱いもできますが、ふつうの実数では 0.999…=1 です[7]。

「割れない」ことも「同じになる」ことも、数の決まりごとから出てきた結論でした。

「近づくが届かない」という直観は、0.999… を数列 0.9、0.99、0.999、… という過程として見るときに生じやすい。数列の途中の数(0.9、0.99、…)はどれも1より小さいが、0.999… はその途中の数ではなく、数列の極限値を表す書き方である[8]。

等比級数でも確かめられる。0.999… = 9/10+9/100+9/1000+… は、初項 9/10、公比 1/10 の無限等比級数で、和は (9/10)/(1−1/10)=1 となる[7]。部分和 0.9、0.99、0.999、… と1の差は、順に 0.1、0.01、0.001、… と10分の1ずつ縮み、どんな正の数よりも小さくなっていく。

この等式は、実数に「0より大きく、どんな正の実数よりも小さい数(無限小)」が存在しないこととも関連している[7]。超実数など別の数の体系では異なる扱いもできるが、通常の実数では 0.999…=1 である。厳密な定義(デデキント切断やコーシー列)は深入りしないが、「近づく」ことと「等しい」ことは、極限の定義の中でつながっている。

「割れない」のも、「同じになる」のも、どちらも数の決まりごとから導かれる。違いは、前者は定義の条件が崩れ、後者は定義の下で値が定まる、という点だ。

8. じぶんで ためして みよう

8. 手元の道具で、割り算の決まりを確かめる

8. 原典を読んで、「割る」の意味をたしかめる

「割われない」と「おなじ」を、じぶんの 手で ためせます。

まず、かみに 1÷3 の ひっさんを して みましょう。3が いつまでも でて くるのを、じぶんの 目で たしかめます。つぎに、0.333… を 3ばいして みます。9が ならびます。これを、この 記事の 5の ところと 見くらべて みましょう。

つぎに、おうちに 電卓でんたくが あれば、3÷0 を おして みましょう。なにが ひょうじされるでしょうか。

電卓でんたくの ひょうじは、きしゅに よって ちがう ことが あります。おうちに べつの 電卓でんたくが あれば、おなじ しきを おして、ひょうじを くらべて みましょう。

家にあるものだけで、今日からできる確かめ方が2つあります。

1つ目は、紙に 1÷3 の筆算を書いてみることです。商に3が並び続ける様子を目で追ってから、0.333… を3倍すると 0.999… になることを、自分の手で確かめられます。5章の説明と見比べてみてください。筆算が終わらないことが、「無限に続く」という意味の手がかりになります。

2つ目は、電卓やスマートフォンの計算機で、3÷0 と 0÷0 を押してみることです。表示は機種で違うかもしれません。同じ式でも、道具の「約束」が違う例を、自分で見つけられます。

押してみると、3÷0 は「答えが一つもない」式、0÷0 は「答えが多すぎる」式でした。表示は同じだったでしょうか、ちがったでしょうか。電卓が「答えなし」と「答えが多すぎる」を区別して見せているかどうか、見比べてみましょう。

手元で確かめるなら、1÷3 の筆算を紙に書き、3が終わりなく続く(0.333…)ことを確認したうえで、それを3倍して 0.999… になるところまで追い、5章の説明と見比べるとよい。電卓やスマートフォンの計算機で 3÷0 と 0÷0 を試し、表示の違いを比べるのも、「約束は道具ごとに違う」ことを実感できる方法だ。

資料としては、割り算の定義を扱った解説[1]、百科事典のゼロ除算と 0.999… の項目[2][7]、ブラーマグプタの伝記[4]、そして MDN と Python の公式文書[5][6]がある。同じ「0で割る」でも、数学・歴史・計算機で問い方が変わることが、読み比べると分かる。

0.999… の議論でも、無限小や超実数のように、「ふつうの実数」という前提を変えると見え方が変わる話題がある[7]。前提を動かすと結論がどう変わるかを追う読み方は、数学の別の分野にもつながる。

しらべた もとの じょうほう

参考にした情報源

参考にした情報源と、その使い方

数学の定義は解説記事、歴史は伝記資料、コンピュータの扱いは公式文書で、複数の資料を突き合わせて読んだ。

  1. ナゾロジー「0で割ってはいけない理由」 https://nazology.kusuguru.co.jp/archives/94085 (割り算の定義)
  2. Wikipedia「ゼロ除算」 https://ja.wikipedia.org/wiki/ゼロ除算 (解なし・解が無数・極限の記号)
  3. Wikipedia "Division by zero" https://en.wikipedia.org/wiki/Division_by_zero (バースカラ2世・IEEE 754)
  4. MacTutor "Brahmagupta" https://mathshistory.st-andrews.ac.uk/Biographies/Brahmagupta/ (ブラーマグプタの計算規則)
  5. MDN Web Docs "Division (/)" https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Division (JavaScriptの0割)
  6. Python documentation "Built-in Exceptions" https://docs.python.org/3/library/exceptions.html (ZeroDivisionError)
  7. Wikipedia「0.999…」 https://ja.wikipedia.org/wiki/0.999... (1/3の説明・等比級数・無限小)
  8. Wikipedia "0.999..." https://en.wikipedia.org/wiki/0.999... (10倍して引く方法・数列の極限)

なおした ところ

更新履歴

更新履歴(改版の記録)

  •  初版を公開。

このサイトでは、公開した記事の本文は原則として書き直しません。誤りが見つかったときや、内容が古くなったときだけ手を入れ、その理由をこの欄に残します。