0 / 0

sign(x) = x / abs(x)はゼロ除算エラーになるからダメ。と書こうと思ったけど、イマイチ引っかかる。

1 / 0

1 / 0 は不定なのはわかる。

1 / 0 = xとおいて、両辺にゼロを掛けると、

1 = x * 0

x * 0で1になる数は無い。なので不定

0 / 0

んじゃ、0 / 0でやってみる。

0 / 0 = xとおいて、両辺にゼロを掛けると、

0 = x * 0

x * 0で0。成り立っちゃった。

調べる

なんかおかしいと思って、ゼロ除算 - Wikipediaを調べてみると、


0 * 1 = 0 * 2

これはいい。0 = 0 / 0とすると、こう書けて、

(0 / 0) * 1 = (0 / 0) * 2を簡約すると、

1 = 2

ナルホド?


これってa / a = 1(ただしaはゼロではない)を使ってるから納得がいかない。次の例もそうだ。

解決

0 / 0 = xとおいて、両辺にゼロを掛けると、

0 = x * 0

x * 0で0。成り立っちゃった。


成り立っちゃったけど、0 = x * 0なんだから、xは不定で、よくわからない値。


成り立っているようだけど、xは何を置いてもいいから、

0 / 0 = 全ての数

となってしまう。ということで、 0 / 0を成り立たせると数学の世界がぶっ壊れてしまう。


やっぱりゼロ除算はダメ。

sign

やっぱりsignはコレ

sign(x) = (x > 0) - (x < 0)