回答編集履歴

1

ちょっとだけ表現を工夫

2018/09/23 13:09

投稿

raccy
raccy

スコア21735

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