けいじゅ@日本ラショナルソフトウェアです.

In [ruby-math:00800] the message: "[ruby-math:00800] Re:
Rational#to_f", on Dec/18 16:55(JST) Tanaka Akira writes:

>> 一方、Ruby の Float は
>>   浮動小数点数のクラス。
>>   Float の実装は C 言語の double で、その精度は環境に依存します。
>> であって、C 言語の double は IEEE 754 形式とは限らないです。
>では C 言語前提ならなにが使えるかというと、
>
>http://www-ccs.ucsd.edu/c/float.html
>
>のようにけっこういろいろあります。今回は DBL_MANT_DIG を使えばいいんじゃ
>ないでしょうか。定義されてなかったら、

マジックナンバーといえば

numeric.c の 827あたりの

    else if (TYPE(from) == T_FLOAT || TYPE(to) == T_FLOAT || TYPE(step) == T_FLOAT) {
	const double epsilon = 2.2204460492503131E-16;
	double beg = NUM2DBL(from);

epsilonもDBL_EPSILONに変えた方が良いですね. 

__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju / rational.com <<---