けいじゅ@いしつかです. In [ruby-dev:20628] the message: "[ruby-dev:20628] Re: [BigDecimal] renaming proposal", on Jul/11 17:10(JST) "Shigeo Kobayashi" writes: >小林です。 >> class Rational >> def to_float_string(prec) >なるほど、思いつきませんでした。 でも, かなりバグっていますが(^^;;; >> >数学的理想主義にかたよっているのではないでしょうか? >> 若干じゃなくて, その通りです. >^.^;; やはり, Float系は何に使いたいかによっていろいろあるんだということを正 直言って反省しました. >> >い)の丸め方法等を個々の算定基準(法律)で桁位置まで含めて >> >厳格に規定されているからです。 >> 確に, Rationalだと実現がめんどうでしょうね. でも, 私に言わしたら, >> Rationalで全部計算するようになっていたら, 途中の丸めとか全くなくて済ん >> だのにって感じですか. >「理想」と「現実」ですね。 ですね. >> 必要がないと言った覚えはありません. 標準添付にするのはどうかなと思って >> いたと言っただけです. >了解です。 失礼しました。 いえ. こちらこそ, 表現が悪かったんだと思います. >では、現状のものはさておき「何らかの BigDecimal 相当機能は必要」 >という点で一致しているということで。 >さて、どんなのが理想なんでしょうかねぇ。 >標準添付に関しては、まぁ、成り行きにまかせます。 これについては、松本さんからの意見表明がありましたね. 私も全く異存はな いです. ですが, 理想という意味で, 私なりの意見を述べさせていただきます. まず, 小林さんはすでにそういう方向に進んでいると思いますが, 何のための クラスかを明確にした方が良いと思います. 最初の名前が BigFloatと言う名前もあったので, Floatの拡張のためのクラス かと思っていました. いや, ちゃんと実際拡張になっているわけですけど ね. でも, 実際の目的はDecimal系の浮動小数点数を作りたかったわけですよ ね. その方針を貫くのが良いと思います. sin/cos/**などの関数は省いて四則演算などの基本的な演算のみにする. これ は, すでにそういう方針で行こうとしていますよね. その他の関数は, bigdecimal-math.(rb|so) とかで良いと思います. こちらの モジュールは, 本来用途(十進四則演算)ではなく, 内在的に持っている多倍長 不動小数点数としての可能性を拡張するものですね. でも, こちらは当分, 標 準添付じゃなくて良いと思います. というか, math系の関数はBigDecimal専用 である必要はなくて, もしかしたら将来現れるかも知れない2進系の多倍長不 動少数点数でも利用できると良いですね。 あと, coerceですが, まず, Stringとのcoerceは絶対なし. BigDecimalの簡略した表現(リテラル)な ど別スレッドで話題になっていますが, これらがボツになってもです. # 松本さんのメイル[ruby-dev:20630]は良く理解できなかったですが, 同じと # ころを指しているのでは? とかってにそうぞうしていす. つぎに, Floatとのcoerceはやめた方が良いと思います. たぶん,小林さんも FloatとBigDecimalを直接演算させることはやってない思います. Floatから BigDecimalに変換するのにビミョーな誤差がでるので暗黙的変換はかなり使い づらいからです. ですので, Float - > BigDecimalは明示的変換にする方が良 い(つまり, 使う本人がわかって使うぶんには良い)と思います. 結果として, coerceするのはInteger系だけにします. そうすると, BigDecimalはIntegerの(四則演算に対する)拡張で2進系のFloatの代替になる もので10進系のFloatという位置づけになります. # これは, 現行よりも格上げしているつもりです. あと, クラス名ですね. BigDecimalでもまあ良いと思いますが, BigDecimalは Floatの代わりになるものであり、10進系を強調するとすればBigをとって Decimal または Decimalnum, Decinum みたいのが良いと思います。 逆に BigDecimalというと FloatのBigなもをイメージするのであまりよくないかな と... 最後に, 演算の精度がちょっと複雑ではないかと思います(特に除算). Javaの BigDecimal見たく割りきった方が良いのでは? 精度に関しては, 指定できる関 数もあるわけですから, わざわざ難しくすることはないと思います. __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju / ishitsuka.com <<---