0

次の Ruby ルーチンで結果として 2.0 が得られる理由を誰か説明できますか? フロートを丸めることがエラーの原因だと思います。

puts(999_999_999_999_999_9.0 - 999_999_999_999_999_8.0);

= 2.0

同じエラー?

puts(999_999_999_999_999_3.0 - 999_999_999_999_999_2.0);

= 0.0

Ruby 1.9.3p448 (2013-06-27) [i386-mingw32] を実行しています。

4

1 に答える 1

0

これらの数はすでに大きすぎて、Ruby はそれらを 1 で数えることができません。それほど多くの数を表すことはできません。したがって、それらは 2 でカウントされます。2 倍大きい数字は 4 でカウントされます。

それは、浮動小数点数の仮数が受け入れることができる桁数に依存します。これは、基本型の説明で常に言及されています。

于 2014-01-13T09:02:15.813 に答える