From: Shigeo Kobayashi Date: 2008-02-12T22:43:28+09:00 Subject: [ruby-dev:33721] Re: bigdecimal 小林です。少し追加しておきます。 ----- Original Message ----- From: "Tadayoshi Funaba" Subject: [ruby-dev:33716] Re: bigdecimal > BigDecimal が閉じてる、というのは、BigDecimal の仕様を読んで感じること ということで、仕様を読んで意図は感じていただいたということで… > です。他の言語でもそうですが、整数だけつかう、浮動小数点数だけつかう、 > ということはないわけで、そういうものが一体となって、計算をこなしている > と思います。 自分としては「そういうものが一体となって」で「閉じている」と表現した訳です。 >> で、Integer というのは「機能拡張ダメ」という話なんでしょうかねぇ? >> それとも、「戻り値が整数のときだけはIntegerに」という話ならアレ >> でして...。 > > Float も含めて、そういう風になっているわけで、拡張なら、やはりおかしい、 > 考えるべきでしょう。 仕様は熟知されているようなので、truncate の例を出します(他も同じです)  require "bigdecimal"  a=BigDecimal("123.456") # ==> 0.123456E3  a.truncate # 1) ==> 0.123E3  a.truncate(0) # 2)==> 0.123E3  a.truncate(1) # 3) ==> 0.1234E3  a.truncate(-1) # 4)==> 0.12E3 この「拡張」がおかしいですか? 私は、これこそ「売り(任意精度)」と思ってるんですけどねぇ。 3)のケースではIntegerを返すことはできません。 > しかしながら、位置付けがどうであれ、BigMath の関数が、モジュール関数で > あって、いけない理由がわかりません。あと、Float#to_d が、 > BigDecimal(self.to_s) なこととか。 これは特に理由はありません。 > あくまで自信がなく、サンプル的なものであるというなら、いっそインストー > ルしないほうがいいのでは? いまさらという気もしないでもありませんが「自信がなく」ということでは ありません。 「計算できる」という例です。 小林 茂雄