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;
}
有没有更优雅的方式来达到这个数值?不使用条件表达式可以实现吗?
编程时,我经常发现自己需要计算是这样的:有没有更好的方法来计算x =(y/n)+(y%n?1:0)?
x = (y/n) + (y % n ? 1 : 0);
或者更明确:
x = y/n;
if (y % n != 0) {
x = x + 1;
}
有没有更优雅的方式来达到这个数值?不使用条件表达式可以实现吗?
所以,你想要整数除法取整。您可以通过添加n-1
的分子假冒本:
x = (y + n - 1)/n;
你转移它会向下调整至刚好够给你想要的结果值的方式。
如果'n'或'y'很大,请注意可能的溢出/包装问题。 – 2012-08-16 05:18:02
y或n是负面的吗?在你的模型中,整数除法是否趋向于零,或者朝向负无穷? – Kevin 2012-08-09 19:30:00
@凯文:y和n总是正面的。从技术上讲,我想它会截断,这将趋于零。 – grieve 2012-08-09 19:38:05