Method: Integer#floor
- Defined in:
- numeric.c
#floor(*args) ⇒ Object
:markup: markdown
call-seq:
floor(ndigits = 0) -> integer
Returns an integer that is a “floor” value for ‘self`, as specified by the given `ndigits`, which must be an [integer-convertible object](implicit_conversion.rdoc@Integer-Convertible+Objects).
-
When ‘self` is zero, returns zero (regardless of the value of `ndigits`):
``` 0.floor(2) # => 0 0.floor(-2) # => 0 ``` -
When ‘self` is non-zero and `ndigits` is non-negative, returns `self`:
``` 555.floor # => 555 555.floor(50) # => 555 ``` -
When ‘self` is non-zero and `ndigits` is negative, returns a value based on a computed granularity:
- The granularity is `10 ** ndigits.abs`. - The returned value is the largest multiple of the granularity that is less than or equal to `self`. Examples with positive `self`: | ndigits | Granularity | 1234.floor(ndigits) | |--------:|------------:|--------------------:| | -1 | 10 | 1230 | | -2 | 100 | 1200 | | -3 | 1000 | 1000 | | -4 | 10000 | 0 | | -5 | 100000 | 0 | Examples with negative `self`: | ndigits | Granularity | -1234.floor(ndigits) | |--------:|------------:|---------------------:| | -1 | 10 | -1240 | | -2 | 100 | -1300 | | -3 | 1000 | -2000 | | -4 | 10000 | -10000 | | -5 | 100000 | -100000 |
Related: Integer#ceil.
5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 |
# File 'numeric.c', line 5852
static VALUE
int_floor(int argc, VALUE* argv, VALUE num)
{
int ndigits;
if (!rb_check_arity(argc, 0, 1)) return num;
ndigits = NUM2INT(argv[0]);
if (ndigits >= 0) {
return num;
}
return rb_int_floor(num, ndigits);
}
|