Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
ticket: https://bugs.ruby-lang.org/issues/18809
I have needed to implement "rounding up division" several times.
("rounding up division" means getting a quotient of division which is rounded up to the nearest integer.)
Typically, this is implemented as follows:
But for me, this is difficult to write without careful consideration.
Every time I implement this, I need to think for a few minutes on paper.
So I propose to add a new method
Numeric#ceildiv
.Typical examples where this is necessary are counting groups and pagination.
e.g. There are 123 items. If you display 10 items on each page, how many pages are there?
We can find several examples of this division also in Ruby's source code. (Try
grep -r -E -e '([^ ]+) *- *1\) */ *\1' .
)Naming:
I was not sure whether to name it
ceildiv
ordivceil
because there are bothdivmod
andfdiv
.Since
divmod
is a method that returns two elements, the quotient and the remainder,while
fdiv
is a method that performs Float division, I decided to followfdiv
.