Description
Sometimes we want do divide an integer by another integer and round up the result to next integer. For example we might want to know how many write operations of a specific size are required to fully write a file of a specific size.
Regular integer division in such scenarios will result in a value that is 1 below the desired result for all operations that involve a remainder and correct for those that don't. There are typically three methods used to calculate such a value:
- cast to a floating point and subsequently round up
- do the integer division, then check if the modulo produces a remainder and add one in that case
- and finally (dividend + divisor - 1) / divisor
The final method while being efficient is not the most readable. Not only can it get very long if we use long and descriptive variable names like:
(data_file_size + max_write_length - 1) / max_write_length
but it's not quite so obvious what we are doing. For this reason I suggest adding the operator +/
so the same operation can be written as such:
data_file_size +/ max_write_length
or dividend +/ divisor
Although such operations almost always only make sense for positive integers. One might consider also adding additional operators -/
, /-
and -/-
to deal with situations where it is known before hand that, respectively, the dividend, divisor or both are negative to avoid unnecessary calls to the absolute value function.