End of Life Ruby 3.1 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →
instance method
Numeric#%
self % other → real_numeric
numeric.c
View on GitHub ↗
static VALUE
num_modulo(VALUE x, VALUE y)
{
VALUE q = num_funcall1(x, id_div, y);
return rb_funcall(x, '-', 1,
rb_funcall(y, '*', 1, q));
}
Returns self modulo other as a real number.
Of the Core and Standard Library classes, only Rational uses this implementation.
For Rational r and real number n, these expressions are equivalent:
Example
c % n c-n*(c/n).floor c.divmod(n)[1]
See Numeric#divmod.
Examples:
Example
r = Rational(1, 2) # => (1/2) r2 = Rational(2, 3) # => (2/3) r % r2 # => (1/2) r % 2 # => (1/2) r % 2.0 # => 0.5 r = Rational(301,100) # => (301/100) r2 = Rational(7,5) # => (7/5) r % r2 # => (21/100) r % -r2 # => (-119/100) (-r) % r2 # => (119/100) (-r) %-r2 # => (-21/100)
Numeric#modulo is an alias for Numeric#%.