是否有更优雅的方法来计算x =(y / n)+(y%n?1:0)?

时间:2012-08-09 19:22:42

标签: math language-agnostic

编程时,我经常发现自己需要计算类似的东西:

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

或更明确地说:

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

有更优雅的方式来实现这个价值吗?可以在不使用条件表达式的情况下实现吗?

1 个答案:

答案 0 :(得分:14)

因此,您希望整数除法向上舍入而不是向下舍入。你可以通过将n-1添加到分子来伪造这个:

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

通过这种方式,您可以将值向下舍入到足以为您提供所需结果的值。