From: Tadayoshi Funaba Date: 2009-06-16T23:52:39+09:00 Subject: [ruby-dev:38660] Re: Fixnum#fdiv > 私が気にしているのは「挙動の理解しやすさ」ですね。 (中略) > Float(Rational(x,y)) > > と同じ結果を返す、と。そういうことであれば、私にとってすっき > りしますし、コストが若干気になりますが、それ以外に反対するよ > うな理由はどこにもありません。 > > 実際のところどうなんでしょう? そう考えていいと思います。が、実際に有理数にすることはないと思います。 多くの Scheme や Common Lisp の処理系では有理数型があるので、整数につい て / を実行すれば、有理数になりますが、浮動小数点数に変換する場合に機会 があります。実際そういう処理系はいくつもあります。Scheme なら exact->inexct、CL なら float など。まつもとさんがいわれるのはこれだと思 います。 でも、有理数のない Scheme 処理系では / でそういう配慮をするものがあるよ うですし、python の場合も有理数をサポートしたら true division は有理数 を返すようになるというこですが、今はそうではないです。 > |現状では fdiv も Complex になることもあり、rdiv と同様に考えればこれも > |おかしい、という可能性があると思います。 > > fdivがcomplexを返す場合、fは実部と虚部がfloatであることを示す、 > と私は理解しています。 計算対象を浮動小数点数にするのか、計算結果を浮動小数点数にするのか、こ こは重要な感じがするんですが、そうだとすると、Float(x)/Float(y) に近い 感じがします。 やはり、まつもとさんとしては、Float(x)/Float(y) であるべきという考えに 傾むいてる感じですね。