给定整数值 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
。是否有更直接的方法可以避免额外的乘法(或二次除法)和分支,并且也避免转换为浮点数?
原文由 andand 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于正数,您希望找到 x 除以 y 的上限 (q)。
围观…
或(避免 x+y 中的溢出)