けいじゅ@日本ラショナルソフトウェアです. 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 <<---