Project

General

Profile

Feature #16021

Updated by Dan0042 (Daniel DeLorme) over 5 years ago

These rounding methods currently accept a number of (decimal) digits, but a more general mechanism would allow rounding to the nearest ΒΌ, multiple of 5, etc. 
 Equivalent to e.g. `((num / step.to_f).round * step)` 

 ``` ruby 
 12.3456.floor(step: 0.2) #=> 12.2 
 12.3456.round(step: 0.2) #=> 12.4 
 12.3456.floor(step: 0.2) #=> 12.4 
 12.3456.floor(step: 0.2) #=> 12.2 
 ``` 

 IMHO this should also apply to Time#floor/round/ceil 

 ``` ruby 
 Time.now.floor(step: 3600) #=> current hour 
 Time.now.round(step: 3600) #=> nearest hour 
 Time.now.ceil(step: 3600)    #=> next hour 
 ``` 

 We can also consider that instead of `:step` , `:by` or `:to` might be quite readable. 

 ``` ruby 
 12.3456.round(by: 0.2) #=> 12.4 
 12.3456.round(to: 0.2) #=> 12.4 
 ```

Back