-
Notifications
You must be signed in to change notification settings - Fork 18.8k
Description
In same cases, like pagination, it is necessary to do:
pages = int(math.Ceiling(float64(items) / float64(itemsPerPage);According to http://www.cs.nott.ac.uk/~rcb/G51MPC/slides/NumberLogic.pdf, the code can be optimized to avoid using floating point support:
pages = (items + itemsPerPage - 1) / itemsPerPageAccording to https://stackoverflow.com/questions/17944/how-to-round-up-the-result-of-integer-division, a simplified version exists that avoid a possible overflow:
pages = (items - 1) / itemsPerPage + 1I have not verified these algorithms. However it should be evident that it is not a trivial problem.
In addition to CeilDiv there are also the CeilMod, FloorDiv, FloorMod and Abs functions.
Finally I also propose to add functions so that integer overflow is reported with an error, like AbsExact, AddExact, DivideExact, MultiplyExact, NegateExact, SubtractExact, CeilDivExact, FloorDivExact.
These functions accept a signed integer (int) as arguments.
References