小林です。

色々とアドバイスありがとうございます。

----- Original Message -----
From: "Akinori MUSHA" <knu / iDaemons.org>
Subject: [ruby-dev:16791] Re: if Re: BigFloat


>  しかし、素朴な疑問なのですが、分母分子が巨大な Rational って
まれなケース(と勝手にみなして)なので使う方も意識
していると、これまた勝手に想像しています。

>  Rational op Float -> Float となっている現状についてはいかが
> でしょうか。
Floatは2進なので、誤差無く Rational に変換できないと思
います。従って Rational op Float -> Rational としても変換
誤差が出てしまうのなら、いっそのこと効率を考えて、Float
にしてしまったのではないでしょうか?

>  確かに、混在するようなケースはユーザが把握し、明示的に変換
> すべきだというのも一理あると思います。いずれにしても明示的な
> 変換メソッドは欲しいですね。
やるなら、[ruby-dev:16789]の to_r をbigdecimal.cにインプリメントして
から
 1.BigDecimal op Rational ==>  BigDecimal#to_r op Rational
 2.Rational op BigDecimal は Rational が coerce してくれるので
     BigDecimal#to_r , Rational = BigDecimal#coerce(Rational)
     というのをbigdecimal.cに入れれば
     Rational op BigDecimal#to_r
   と Rational 側で実行してくれるのではないでしょうか?

------------------
小林 茂雄
shigeo / tinyforest.jp