Feature #10131

Greatest multiple of r not greater than x

Added by sawa (Tsuyoshi Sawada) over 6 years ago. Updated over 6 years ago.

Target version:


It happens too often to me that I want to calculate the greatest multiple of numeric r not greater than numeric x. This can be done by a simple operation below:

x, r = 3.7, 0.5
x.div(r).*(r) #=> 3.5

x, r = 41, 6
x.div(r).*(r) #=> 36

but I encounter this operation so often that I think it is an essential operation, and should be done as a single operation. Can any of the existing zero-ary operation be extended to take an optional argument to do this calculation? For example

3.7.floor(0.5) #=> 3.5
41.floor(6)    #=> 36

Updated by sawa (Tsuyoshi Sawada) over 6 years ago

And also a corresponding method that gives the least multiple of r not smaller than x would be helpful.

3.2.ceil(0.5) #=> 3.5
41.ceil(6)    #=> 42

Updated by nobu (Nobuyoshi Nakada) over 6 years ago

  • Description updated (diff)
  • Status changed from Open to Feedback

Rational#floor and BigDecimal#floor take a precision argument optionally, like as Float#round.

Also available in: Atom PDF