青山です。

電卓などで、小数点以下何桁かで切捨てや四捨五入などをする機能のついてい
る物ってありますよね。電卓にあるぐらいですから、割と一般的な機能だと思
うのですが、Float#ceil, Float#floor, Float#round を小数点以下、何桁で
それを行うかを引数で取れるようにするのはいかがでしょう。

という提案と、まあ、これが通ったとしても、すでに 1.5 はフリーズしてい
るので、1.7 までは入らないかもしれないので、とりあえず自前で Float 以
外に用意する場合、こんな感じで良いのでしょうか。

def ceil(n, dp)
  (n * 10 ** dp).ceil.to_f / 10 ** dp
end
p ceil(12345.6789, 2)

という質問もしたかったので、ruby-math に出してみました。

あ、せっかくの ruby-math ですから、もう一つ。小数点以下何桁ではなく、
有効数字何桁でまるめる処理を数学的に簡単に書けますか? sprintf で済ま
せていたのですが、ふと考えると、あまり良くないような気がしまして。

$ ruby -e'p sprintf("%.2e", 123456.789).to_f'
123000.0


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