给定整数值 x
和 y
,C 和 C++ 都将商 q = x/y
返回为浮点等价物的 floor。我对一种返回 ceiling 的方法感兴趣。例如,ceil(10/5)=2
和 ceil(11/5)=3
。
显然的方法涉及以下内容:
q = x / y;
if (q * y < x) ++q;
这需要额外的比较和乘法;而我看到的其他方法(实际使用过)涉及将其转换为float
或double
。是否有更直接的方法可以避免额外的乘法(或第二个除法)和分支,并且还可以避免将其转换为浮点数?
q = x/y + (x % y != 0);
即可。该语句已足够表达原意。 - phuclv