0による除算

| | Comments (4) | TrackBacks (1)

久しぶりに、0除算による実行時エラーを出してしまった。

 calculator「0除算による実行時エラー」とは、プログラムの中で0で割り算をするようなコードを書いてしまうと、解が出ない(存在しない?言葉が難しいが・・)為に、コンピュータの処理が停止してしまうというもの。

今日、職場でMakingをしてて「実行時エラー」が出たので、何かと思ってデバックしてみると、原因はこれだった。SE一年目のころは、何度かこんなエラーを出して怒られたことがあるが、今になってこんなPGを組んでしまうとは思わなかった。

SE一年目の頃は、忙しかったということもあって、「0で割ってはダメである」という定義を丸呑みしていたのだが、今考えると、「なぜ0で割ってはいけないのか?」という素朴な疑問が浮かんでくる。その疑問に気付かせてくれたのは、カウンターパートだ。

カウンターパートと一緒に、このエラーについて話をしていると、「っていうか、なんで0で割ったらダメなの?」という問いを投げかけられた。そして、恥ずかしながら自分は答えに窮してしまったのだ。

家に戻ってから、理数科教師の隊員に聞いたり、文献を読んだりして調べたら、なんとなく0で割ってはいけない理由が分かってきた。

簡単に説明すると、

X ÷ 0 = Y (X≠0)とすると、
X = 0 * Y という式が成り立つ。

すると、0に何をかけても答えは0になるので、右辺(0*Y)の答えは必ず0になる。一方左辺については、最初にX≠0と定義しているので、この式は成り立たないのだ。よって、0による割り算の答え(Y)は存在しないということになる。

また、0を0で割る場合はどうだろうか。

0 ÷ 0 = Y とすると、
0 = 0 * Y という式が成り立つ。

すると今度は、Yには何が入ってもOKということになる。(0に何をかけても0だから)

このことから導き出されるのは、0による除算の解は無限大に発散してしまい(「存在しない」もしくは、「なんでもOK」)、計算すること自体が不可能(無意味?)なのだ。

日本でずっとエンジニアをしていたら、こんな事には目もくれなかったことだろう。フィリピン人の同僚が素朴な疑問を体当たりでしてきてくれるので、自分もこれまで「当たり前」のこととして呑み込んでいたことをも、再考する機会が与えられるのだ。なんだか最近は、フィリピン人に教えられることの方が多い気がするなぁ。。。

補足1
写真は、Windowsの電卓にて0除算をしてみた結果。答えの部分に「0で割ることはできません」と表示されるとは、思わぬ小発見。
補足2
実際のコンピュータの世界では、除数が限りなく0に近い場合でも同様のエラーが発生する場合がある。これは、演算の中で切り捨てなどの内部演算が行われた場合、結局は0による除算として扱われてしまうことがあるため。

, ,

Categories

1 TrackBacks

Listed below are links to blogs that reference this entry: 0による除算.

TrackBack URL for this entry: http://www.proustcafe.com/mt-tb.cgi/410

» 0の謎 from RYOTAUEDA.COM - diary

[PC]:Proust Cafe: 0による除算 X ÷ 0 = Y (X≠0... Read More

4 Comments

はじめまして!
ひろがるblogより参りました。

>「当たり前」のこととして呑み込んでいたことをも、再考する機会が与えられるのだ・・・

たしかに、こういうふうに気がつくときってありますね!
なにか、あらためて「発見!」の感動とともに目の前の目線が変わったような時ってありますね。

PCのことは全然くわしくありませんが、ヨロシクお願いいたします。ヽ(^o^)ノ

Proust said:

Youyounonbiriさん、こんにちは。

普段は当然と思っていることが、実は違うんじゃないかと疑う気持ちって大事ですよね。大人になればなるほど、その気持ちを忘れてしまっていたような気がします。(反省)

みっち said:

数式の意味は難しくてわからなかったけど、追求してみたところがえらいね^^
私は数学が嫌いになった理由の一つに1/3=0,333...というやつ。永遠に3が続いて割り切れないのに、何で1/3とイコールになるのかと受け入れられなかった。絶対イコールじゃない!!って。
だけど今、改めて考えてみて1/3というのは一つの便宜上の概念で0.333というのは実数なんか?みたいな事をふと思いました。それと、わからない事は他にもたくさんあって、これはしょうがないよなーとか。

日本のラジオでやってた子供電話相談の子供の素朴な疑問が実におもしろかった。何でわかめは海にいるときにはだしが出ないの?とか。

要は答えは無数にあるわけで、大事なことは子供のように「何で?」って素朴な疑問を持てる感性が死なないことだよね。

Proust said:

みっちさん、こんにちは。

>私は数学が嫌いになった理由の一つに1/3=0,333...というやつ。

これは、両辺に3をかけると、「1 = 0.999....」という式が成り立つことになって、「なんで1が0.9なの?」と中学生を悩ますやつですねぇ。(証明するには「デーデキントの切断」などの公理が出てきて、私には理解不能です。。。)

つまりは、みっちさんもおっしゃられてる通り、素朴な疑問を追及する心を忘れないことですな。何歳になっても。

Leave a comment

About this Entry

This page contains a single entry by proust published on February 1, 2005 5:32 PM.

ポッドキャスティング(podcasting) was the previous entry in this blog.

日本食で持て成す誕生日 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Powered by Movable Type 4.0