2012-08-09 81 views
6

编程时,我经常发现自己需要计算是这样的:有没有更好的方法来计算x =(y/n)+(y%n?1:0)?

x = (y/n) + (y % n ? 1 : 0);

或者更明确:

x = y/n; 
if (y % n != 0) { 
    x = x + 1; 
} 

有没有更优雅的方式来达到这个数值?不使用条件表达式可以实现吗?

+0

y或n是负面的吗?在你的模型中,整数除法是否趋向于零,或者朝向负无穷? – Kevin 2012-08-09 19:30:00

+0

@凯文:y和n总是正面的。从技术上讲,我想它会截断,这将趋于零。 – grieve 2012-08-09 19:38:05

回答

14

所以,你想要整数除法取整。您可以通过添加n-1的分子假冒本:

x = (y + n - 1)/n; 

你转移它会向下调整至刚好够给你想要的结果值的方式。

+2

如果'n'或'y'很大,请注意可能的溢出/包装问题。 – 2012-08-16 05:18:02

相关问题