[ruby-core:94987] [Ruby master Feature#16021] floor/ceil/round/truncate should accept a :step argument
From:
akr@...
Date:
2019-09-19 09:22:23 UTC
List:
ruby-core #94987
Issue #16021 has been updated by akr (Akira Tanaka). `Time.now.floor(step: 3600)` doesn't work well with leap seconds. Also, we want floor/round/ceil for month and year but one month and one year is not fixed number of seconds. So, step with number of seconds doesn't for month and year. = ---------------------------------------- Feature #16021: floor/ceil/round/truncate should accept a :step argument https://bugs.ruby-lang.org/issues/16021#change-81607 * Author: Dan0042 (Daniel DeLorme) * Status: Feedback * Priority: Normal * Assignee: = * Target version: = ---------------------------------------- These rounding methods currently accept a number of (decimal) digits, but a= more general mechanism would allow rounding to the nearest =BC, multiple o= f 5, etc. Equivalent to e.g. `((num / step.to_f).round * step)` ``` ruby 12.3456.floor(step: 0.2) #=3D> 12.2 12.3456.round(step: 0.2) #=3D> 12.4 12.3456.floor(step: 0.2) #=3D> 12.4 12.3456.floor(step: 0.2) #=3D> 12.2 ``` IMHO this should also apply to Time#floor/round/ceil ``` ruby Time.now.floor(step: 3600) #=3D> current hour Time.now.round(step: 3600) #=3D> nearest hour Time.now.ceil(step: 3600) #=3D> next hour ``` We can also consider that instead of `:step` , `:by` or `:to` might be quit= e readable. ``` ruby 12.3456.round(by: 0.2) #=3D> 12.4 12.3456.round(to: 0.2) #=3D> 12.4 ``` -- = https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=3Dunsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>