Ruby で float を指定された有効桁数に丸めるにはどうすればよいですか?
概要
Rのsignif関数に相当するものがRubyにあればいいですね。
例えば:
>> (11.11).signif(1)
10
>> (22.22).signif(2)
22
>> (3.333).signif(2)
3.3
>> (4.4).signif(3)
4.4 # It's usually 4.40 but that's OK. R does not print the trailing 0's
# because it returns the float data type. For Ruby we want the same.
>> (5.55).signif(2)
5.6
解決策
おそらくもっと良い方法があるでしょうが、これはうまくいくようです:
class Float
def signif(signs)
Float("%.#{signs}g" % self)
end
end
(1.123).signif(2) # => 1.1
(11.23).signif(2) # => 11.0
(11.23).signif(1) # => 10.0