最佳答案
给定整数值x
和y
, C和c++都返回为商q = x/y
,即浮点等价物的整层。我感兴趣的是一种返回天花板的方法。例如,ceil(10/5)=2
和ceil(11/5)=3
。
最明显的方法是:
q = x / y;
if (q * y < x) ++q;
这需要额外的比较和乘法;和我所见过(实际上使用过)的其他方法都涉及到转换为float
或double
。有没有一种更直接的方法可以避免额外的乘法(或二次除法)和分支,同时也避免将类型转换为浮点数?