青山です。

On Tue, 13 Jun 2000 18:41:56 +0900,
"Shigeo Kobayashi" <shigeo / tinyforest.gr.jp> wrote:

> > まあ、確かに銀行系ではそうなのでしょうけれど、素直に round_up, down を
> > 使うべきのような。逆に言えば、無限小に近い方の値を返す関数が無いという
> > 事ですよね。そういうのが必要な場合、Excel ではどうするのやら。
> >
> ROUNDがあります。
> ROUND(-1.475,2) ==> -1.48

あ、いえ、floor(-1.475) --> -2 ですが、それに相当する関数は Excel には
無いのでは、という事です。ROUND(-1.475,0) は -1 になるんですよね? 四
捨五入ですから。

> a.round_up と a.round_down は、a が正か負で a.ceil や a.floor と
> まったく同じことになるので、わざわざ用意するのはどうでしょう?

え? round_up は負でも ceil, floor とも違いますよ?

        ceil    floor   to_i   round_up   round_down
 n.m   n + 1      n       n      n + 1        n
-n.m    -n     -(n-1)    -n    -(n + 1)      -n

> a.round[(n)]
>  n>=0 なら小数点以下 n+1 位を四捨五入する。
>     (小数点以下を最大で n 桁にする)。
>  n<0 なら小数点から左 n 桁目で四捨五入する。
>     (整数で且つ、整数部 n 桁をゼロにする)。
> 
> a.ceil[(n)]/floor[n]
>  n>=0 なら小数点以下 n+1 位を ceil/floor する。
>  n<0 なら小数点から左 n 桁目で ceil/floor する。
> 
> これで、Excel がやっていることはカバーしていると思います。
> 
> 引数 n が無いときは、今までどおり整数(Fixnum/Bignum)
> が返る。引数 n があるときは Float が返る。

引数の扱いについてはこれで良いと思いますが、返り値は検討の余地がありそ
うです。C の ceil, floor って、double を返すんですよね。という事は、引
数無しの場合も、Float を返すという事に統一でも良さそうですが、いかがで
しょう?

まあ、互換性は無くなりますが、1.7 以降の話ですし(いよいよ、あと半月で
すか)、この程度の非互換は、検討されても良いように思います。

> いずれにせよ、このような機能を入れるかどうか
> も含めて、他の方の意見はどうなんでしょう?

ですね。


-- 
青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>