Method: Float#divmod
- Defined in:
- numeric.c
#divmod(other) ⇒ Array
Returns a 2-element array [q, r], where
q = (self/other).floor # Quotient
r = self % other # Remainder
Examples:
11.0.divmod(4) # => [2, 3.0]
11.0.divmod(-4) # => [-3, -1.0]
-11.0.divmod(4) # => [-3, 1.0]
-11.0.divmod(-4) # => [2, -3.0]
12.0.divmod(4) # => [3, 0.0]
12.0.divmod(-4) # => [-3, 0.0]
-12.0.divmod(4) # => [-3, -0.0]
-12.0.divmod(-4) # => [3, -0.0]
13.0.divmod(4.0) # => [3, 1.0]
13.0.divmod(Rational(4, 1)) # => [3, 1.0]
1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 |
# File 'numeric.c', line 1441 static VALUE flo_divmod(VALUE x, VALUE y) { double fy, div, mod; volatile VALUE a, b; if (FIXNUM_P(y)) { fy = (double)FIX2LONG(y); } else if (RB_BIGNUM_TYPE_P(y)) { fy = rb_big2dbl(y); } else if (RB_FLOAT_TYPE_P(y)) { fy = RFLOAT_VALUE(y); } else { return rb_num_coerce_bin(x, y, id_divmod); } flodivmod(RFLOAT_VALUE(x), fy, &div, &mod); a = dbl2ival(div); b = DBL2NUM(mod); return rb_assoc_new(a, b); } |