From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2003-07-14T23:38:28+09:00 Subject: [ruby-dev:20662] Re: [BigDecimal] 標準添付案 [Re: Re: [BigDecimal] renaming proposal] けいじゅ@いしつかです. In [ruby-dev:20648] the message: "[ruby-dev:20648] Re: [BigDecimal] 標 準添付案 [Re: Re: [BigDecimal] renaming proposal]", on Jul/13 21:47(JST) "Shigeo Kobayashi" writes: >小林です。 >> ね. でも, 実際の目的はDecimal系の浮動小数点数を作りたかったわけですよ >> ね. その方針を貫くのが良いと思います. >最初の BigFloat って名前が良くなかったですね。 >ほんと、名前ってむずかしい。 です. >> sin/cos/**などの関数は省いて四則演算などの基本的な演算のみにする. これ >> は, すでにそういう方針で行こうとしていますよね. >そういうことです。標準添付ってことになると、ほったらかしでは都合 >が悪いかなと... >そもそも、効率やロジックの検証用に作成したものなんですが、消す >にはもったいなくて... その気分はわかります. が, 別ファイルで生き残りますので. >> あと, coerceですが, >> まず, Stringとのcoerceは絶対なし. BigDecimalの簡略した表現(リテラル)な >> ど別スレッドで話題になっていますが, これらがボツになってもです. >うーーん。 まぁ、わかっちゃいるんですけど。 標準添付にするって話じゃなければ, こちらもそう強くは言えないですけど, 標準添付にするって話だとね... >いや、その通りです。 取りあえず #ifdef でくくって、こっそり自分だけ >(やりたい人だけ)使うようにするということで。 まあ, それなら. >> つぎに, Floatとのcoerceはやめた方が良いと思います. たぶん,小林さんも >> FloatとBigDecimalを直接演算させることはやってない思います. Floatから >BigDecimal#to_f を BigDecimal にしたのはこのことを想定していました。 これは, Floatにされるんですよね? to_i/to_s/to_fのようなものは, いろい ろなところで同じ仕様を持つと仮定されていますので, 仕様を変えるのは問題 ありです. >でも、現状では Floatとのcoerceはできちゃうようで、中途半端でした。 >すっぱりと削除が気持ちいいですね。 です. >> づらいからです. ですので, Float - > BigDecimalは明示的変換にする方が良 >> い(つまり, 使う本人がわかって使うぶんには良い)と思います. >BigDecimal#split を用意したのが、まさにこの理由からなんですけど >このときに coerce の矛盾に気がつくべきでした。 >(Float op BigDecimal なんて、ここでは頭になかった) BigDecimal#splitはわからんでもないですが... あとで, to_f/to_dの話題の 時に. >うっ、また名前を変えるのは、ちょっと... >2進系の Float には既に BigFloat(Bigfloat) を返却していますし... 小林さんがそれで良いならそれでも良いですが, Decimalの方がカッコ良いと 思うんですが. 場合によっては, aliasでもよいと思います. >> 最後に, 演算の精度がちょっと複雑ではないかと思います(特に除算). Javaの >> BigDecimal見たく割りきった方が良いのでは? 精度に関しては, 指定できる関 >> 数もあるわけですから, わざわざ難しくすることはないと思います. >多分 Java の BigDecimal は Bignum * 10 ** (-scale) という感じで >すよね。で、scale<0 にはできない点で当方の BigDecimal とちがいます。 ですね. JavaのBigDecimalはどっちかというと固定少数点数の拡張って感じで すか. (中略) >ある意味、精度指定は単純といえるかもしれないですね。 ですよね. >ただ、Java でも scale の指定、桁位置を操作するにはmovePointLeft(int) や >movePointRight(int)、割り算にしても > divide(BigDecimal val, int roundingMode) > divide(BigDecimal val, int scale, int roundingMode) >等あります。 うーん. なるほど. >とはいっても、もう少し単純にできないかという欲求も頷ける >ものがあります。 今後の課題ですね。 ですね... __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@ishitsuka.com <<---