From: Tadayoshi Funaba Date: 2008-02-12T21:16:26+09:00 Subject: [ruby-dev:33716] Re: bigdecimal > 学校では 2 でも 2.0 でもマルを貰えた...、というのはさておき、 > truncate 等の結果ががIntegerというのは2進Floatの特異性から > きているのでは? 複数クラスにまたがるより、本来一つのクラス > 内で閉じていたほうが自然と思います。 BigDecimal が閉じてる、というのは、BigDecimal の仕様を読んで感じること です。他の言語でもそうですが、整数だけつかう、浮動小数点数だけつかう、 ということはないわけで、そういうものが一体となって、計算をこなしている と思います。 BigDecimal とはそういうものだ、ということなのかもしれませんが、特に ruby の Numeric なクラスとしてみても、異質な感じがします。 > それに、BigDecimalはFloatの機能を拡張している部分もあるわけ > で、Integer というのは「機能拡張ダメ」という話なんでしょうかねぇ? > それとも、「戻り値が整数のときだけはIntegerに」という話ならアレ > でして...。 Float も含めて、そういう風になっているわけで、拡張なら、やはりおかしい、 考えるべきでしょう。 > それと(util.rbはともかく)、math.rbはサンプル的位置づけ(従って、 > ソースは可能な限りにシンプル)であり、勝手にロードされるのは > 良くないということで以前(5年前?)、納得の上で決着したたはず > だったと記憶しているのですが...。 そうなのですか。実はそのころは、あまり余裕がなくて、議論を読んでないん ですよ。気がついたら、BigDecimal が添付されていました。 しかしながら、位置付けがどうであれ、BigMath の関数が、モジュール関数で あって、いけない理由がわかりません。あと、Float#to_d が、 BigDecimal(self.to_s) なこととか。 > もちろん、sin/cos等の任意精度アルゴリズムの決定版があれば > 組み込む気は大いにありますが、現状版を押し付ける勇気は > ありません。 あくまで自信がなく、サンプル的なものであるというなら、いっそインストー ルしないほうがいいのでは?