From: Yukihiro Matsumoto Date: 2008-04-03T06:17:38+09:00 Subject: [ruby-dev:34233] Re: Complex組み込み まつもと ゆきひろです In message "Re: [ruby-dev:34232] Re: Complex組み込み" on Thu, 3 Apr 2008 04:26:17 +0900, "Kenta Murata" writes: |ふなばさんが [ruby-dev:34229] で仰っているように,浮動小数点数は |他の正確な数を食ってしまうと考えた方が良いです.一旦浮動小数点数に |変換して計算した値を正確に整数や有理数に変換できることは期待でき |ないはずです. それは無理でしょうね。誤差のことまで考えると特に。 |もしどうしても変換する必要があるなら,そのような |問題があることを理解したうえで Float#to_r で明示的に行われるべき |でしょう.ですから,内部で Float を Rational に変換してから何かを行う |メソッドや演算は存在しない方が親切ではないかと思います. ふむ、その場合、rdiv(つまり結果がrationalであることが期待さ れるdiv)がfloatを与えられた場合、どのような動作をすべきでしょ うか。まあ、どうでもよいっちゃその通りなんですが、実装する身 としてはなんとか挙動を定義しないといけないんで。 (a) rdivにfloatが混じったらエラー (b) floatをむりやりrationalに変換して(これは可能)計算続行 (c) floatが混じったらrdivだろうがfloatを返す (d) その他 現在は(b)の挙動になってます。 まつもと ゆきひろ /:|)