| 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