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
selfis zero, returns zero (regardless of the value ofndigits):``` 0.floor(2) # => 0 0.floor(-2) # => 0 ``` -
When
selfis non-zero andndigitsis non-negative, returnsself:``` 555.floor # => 555 555.floor(50) # => 555 ``` -
When
selfis non-zero andndigitsis 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); } |