回答編集履歴
1
ちょっとだけ表現を工夫
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
|
19
|
-
対して、Float同士の`/`ですが、こちらは余りを無視した右辺を左辺で割った値です。`0`をFloatにすると`0.0`になりますが、同じくゼロで割っているのだから、こちらもエラーになるのではと思うかも知れませんが、`0`と`0.0`では意味が異なります。整数の`0`は本当にっぴったりのゼロですが、`0.0`は正の方向からゼロに極めて近い値を表します。本当は0.00000...(たくさん続く)...0001かも知れませんが、Floatが表現可能な精度を超えてしまうと`0.0`になってしまいます。同様に負の方向からとして`-0.0`が存在します。そのためRubyでは、`0.0`で割るということは、ゼロに極めて近い値とみなし、そのような値で正の数を割ったときは、無限大(Infinity)を返すと言うことです。もし、`-0.0`であれば、ちゃんと負の無限大を返します。
|
19
|
+
対して、Float同士の`/`ですが、こちらは余りを無視した右辺を左辺で割った値です。`0`をFloatにすると`0.0`になりますが、同じくゼロで割っているのだから、こちらもエラーになるのではと思うかも知れませんが、`0`と`0.0`では意味が異なります。整数の`0`は本当にっぴったりのゼロですが、`0.0`は正の方向からゼロに極めて近い値([0~とても小さい正の実数]という範囲)を表します。本当は0.00000...(たくさん続く)...0001かも知れませんが、Floatが表現可能な精度を超えてしまうと`0.0`になってしまいます。同様に負の方向からとして`-0.0`([とても小さい負の実数~0]という範囲)が存在します。そのためRubyでは、`0.0`で割るということは、ゼロに極めて近い値とみなし、そのような値で正の数を割ったときは、無限大(Infinity)を返すと言うことです。もし、`-0.0`であれば、ちゃんと負の無限大を返します。
|
20
20
|
|
21
21
|
※ 浮動小数点数の除算における`0.0`の扱いは言語によって異なります。例えばPythonでは無限大ではなくゼロ除算のエラーが発生します。
|
22
22
|
|