正木です。

|[ruby-math:00798] Re: Rational#to_f
|From: shudo / computer.org
||したがって指数部は -1024 から 1023 までの値を取るわけですが、
|
|11 bit で e = 0 〜 2047 が表されると考えて、
|指数部は 2 ** (e - 1023) となります。
|なので、-1024 から 1023、という考え方ではないです。

ruby 1.7.3 (2002-11-07) [i686-linux] で色々試してみた結果から
推測して書いたのでだいぶ間違ったことを書いてしまったようです。


|[ruby-math:00802] Re: Float#to_rational
|From: shudo / computer.org
|
|  厳密な浮動小数点演算セマンティクスの Java 実行時コンパイラへの実装
|  http://www.shudo.net/publications/swopp0107/

参考になりました。


|この x86 の挙動は、バグではなくて、
|仕様であって、しかも IEEE 754 に準拠したものです。

そうだろうとは思っていました。ただそれを納得するかどうかだけの
問題です。

私自身はそういうややこしいことが苦手なので、殆ど Real で済まして、
やむを得ない場合以外は Float を使わないようにしています。