数字をゼロで割る?!




th_img_2839

こんにちは。プロクラスの吉田です。

ヨシダミツヒロ(@milan40920)

この画像なんだと思いますか?

これはiPhoneであることをすると表示されるのですが、どうすると起こるかというと。

プログラムを組んでいる人にはとても馴染みがあり、一度は目にしたことあるエラーです。

「Divide by zero」というエラーなのですが、「ゼロ割」とか「ゼロ除算」といったりします。

エクセルのセルでの計算でも出たりするのですが、「#DIV/0!」っていう文字見たことありませんか?

これは、

0で割る割り算。

そうです、整数を0で割るということです。

5÷0や10÷0の様な計算のことを示しています。

iPhoneの電卓で1÷0とすると上の画面になります。

なぜエラーになってしまって、やってはダメなのかは意外と知らない方が多いかもしれないなと思い、少しこの話をしようと思います。

割り算ってどういうこと?

考え方としては、いくつかあるのですが、

子供たちに一番分かりやすい方法をお話しますと、まず考えてみましょう。

「リンゴが4個あります。4人の人が同じ数を受け取るにはリンゴをいくつずつ渡せばいいですか?」

という問題があった時の答えはなんでしょうか。

そう「1個」です。

これは割り算を使うわけですが、式で表すと、

リンゴ4個÷4人=1個

となるのが計算式です。

この計算の意味をもう少し説明すると、

「リンゴの数に対して、人の数分取れるか?」

という考えで成り立っています。

この問題の場合、4個のリンゴに対して、4人分取れるのは一人1個ですよね。

割り算とはそういうことです。

では、

4つのリンゴを1人分取るとどうなるか。

ですが、これは、

リンゴ4個÷1人=4個

となるのが計算式です。

この問題の場合、4個のリンゴに対して、1人分取れるのは4個

となります。(ちょっとややこしいですが、ついてきてくださいね)

割り算を別の考え方で見てみる。

この2つの割り算は、こういう考え方もできます。

引き算で考える方法です。

1つ目は、

リンゴ4個÷4人=1個

なので、

4個から、何回1人分を引けますか?

4個ー1人分=残り3個(1回目)
4個ー1人分=残り2個(2回目)
4個ー1人分=残り1個(3回目)
4個ー1人分=残り0個(4回目)

のように、リンゴの数を人の数分引いていくという考え方では4回引けるわけです。

2つ目は、

リンゴ4個÷1人=4個

なので、

4個から、何回4人分を引けますか?

4個ー4人分=残り0個(1回目)

のように、リンゴの数を人の数分引いていくという考え方では1回だけ引けますね。

はじめの考え方も、今回の考え方も「割り算」について別の視点であって、結果は同じです。

で、0で割るということは?

さて、本題に戻りますが、「0で割る」を上の2つの考え方に当てはめてみましょう。

1つ目の考え方では、

4つのリンゴを0人分取るとどうなるか。

ですが、これは、

「0人」という考え方がない(0人は人がいない)のですが、ここは数字の話ですので進めますと、

4つのリンゴから0人分は「いくらでも取れる」わけです。

他の見方として、では2つ目はどうでしょうか。

4個から、何回0を引けるんだろう。

4個ー0人分=残り4個(1回目)
4個ー0人分=残り4個(2回目)
4個ー0人分=残り4個(3回目)
4個ー0人分=残り4個(4回目)
4個ー0人分=残り4個(5回目)


と、当たり前ですが、、残りのリンゴは減ることがありませんので無限に引けてしまいますね。。

とういわけで、0で割るということは、答えが「無限」となってしまうため、
コンピュータは永遠と計算してしまうことになります。

いくら計算しても、計算結果がでないため、即止められてしまうわけなのです。

もっといろいろな説明があるかと思いますが、概ねこのあたりが「エラー」扱いにされる所以です。

おまけ

ちなみに、今私達が使っている数字はアラビア数字といいますが、
このアラビア数字(1や2の数字)に0(ゼロ)が初めて使われ、それまでの数字はローマ数字(ⅩやⅦなど)は「0」の概念がなかったといいます。
5世紀頃古代インドの王朝であるグプタ朝で使われ、何世紀も後にアラビア半島からヨーロッパに伝承され「アラビア数字」と呼ばれたんだそうです。

ローマ数字の時代ではこの0割ということ自体存在しなかったということですね!

プロクラスの吉田でした!

ヨシダミツヒロ(@milan40920)