けいじゅ@いしつかです.

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 <<---