小林です。

----- Original Message -----
From: "Wakou Aoyama" <wakou / fsinet.or.jp>
Subject: [ruby-math:00307] Re: Float#ceil, Float#floor, Float#round


>
> あ、そうなんですか。これは、floor, ceil の返り値は Integer だろうけれ
> ど、round は Float も有りかな、という感じでしょうか? それとも、ユーザー
> が引数を与えるなら、意図してやる事なのだから、その場合には Float を返
> してもいいじゃないか、という感じでしょうか?
>
どちらかというと両者です。今でも BigFloat::round や BigFloat::ceil は
BigFloat な整数値を返しています(ドキュメントの記述が不正確で、申し訳
ありません)。

> 前者の場合、Float#round に 桁数、up、off のオプションというのは有りな
> のかな、とか、後者の場合、integer = Float#round、float = Float#round(n)
> は許せるのかな、とかの疑問がわきますが、いかがでしょう?>みなさん
>
> (やはり、標準の Float にも任意の桁での丸めがあると便利そうなので)
>
確かに便利だとは思います。ただ、前にごとけんさんが言っているように、
指定するのは10進の桁位置ですが、その桁位置が2進である Float の
位置として指定しきれない問題があるので、いかがでしょう?>みなさん

BigFloat#round に 桁数、up、off のオプションというのは有りと考えています。
# 最初、 BigFloat はなるべく Float にあわせようと思っていました。
# 今は、(Ruby に Builtin するなら別ですが) Float の概念から離れても
# いいから、自由に「こんな拡張ライブラリがあってもいいかな」という気がし
# ています。そのような観点から、今回の round の拡張のような意見をお待
# ちしております。

> > ただ、利用する側から見ればまったく理不尽なことはジュウジュウ
> > 承知しておりますです。
>
> いえいえ、Big Float という事では、精度を落とす(制限する)桁数指定は、本
> 来不要なのかもしれませんしね。元々誤差を含む、計測データの処理などに必
> 要なのは、RoundFloat なのかも。
>
最初は、そう考えていました。多分、それはそれで正しいと思います。
ただ、現状では、不自然さが残るのも事実ですね。
「精度」より、自由に桁数指定ができるようにしたいというのが目標です
(たとえ、それが精度を落とすことになっても)。
# BigFloat というより VariableFloat かな?

> ただ、やはり計測の計算はちょっと特殊ですよね。メーターの最少目盛が 1
> で、1/10 まで読むとすると、1.1, 11.1 111.1 1111.1 11111.1 これらは、す
> べて同じ精度というか、精度の基準が、全体の桁数ではなく、1/10、すなわち、
> 小数点以下の桁数になりますから。
>
「特殊」かどうかはわかりませんが、意図されていることは十分に伝わって
きます。


小林 茂雄
shigeo / tinyforest.gr.jp