DIG | Float が表現できる最大の 10 進桁数 |
EPSILON | 1.0 + Float::EPSILON != 1.0 となる最小の値 |
MANT_DIG | 仮数部の Float::RADIX 進法での桁数 |
MAX | Float が取り得る最大値 |
MIN | Float が取り得る最小値 |
MAX_10_EXP | 最大の 10 進の指数 |
MIN_10_EXP | 最小の 10 進の指数 |
MAX_EXP | 最大のFloat::RADIX 進の指数 |
MIN_EXP | 最小のFloat::RADIX 進の指数 |
RADIX | 指数表現の基数 |
ROUNDS | 丸めモード (-1: 不定、0: 0.0 の方向に丸め、1: 四捨五入、2:正の無限 大の方向に丸め、3:負の無限大の方向に丸め) |
Numeric - Rubyリファレンスマニュアルに書いてある。
class Numeric def roundup(d=0) x = 10**d if self > 0 (self * x).ceil.quo(x) else (self * x).floor.quo(x) end end def rounddown(d=0) x = 10**d if self < 0 (self * x).ceil.quo(x) else (self * x).floor.quo(x) end end def roundoff(d=0) x = 10**d if self < 0 (self * x - 0.5).ceil.quo(x) else (self * x + 0.5).floor.quo(x) end end end if $0 == __FILE__ x = 123.543 puts x.roundoff(2) # => 123.54 puts x.roundoff(1) # => 123.5 puts x.roundoff(0) # => 124.0 puts x.roundoff(-1) # => 120.0 puts x.roundoff(-2) # => 100.0 end
num = 1234567890 p num.to_s.gsub(/(\d)(?=\d{3}+$)/, '\\1,') #=> "1,234,567,890"