6

プログラミング中に、次のような計算が必要になることがよくあります。

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

またはより明示的に:

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

この値を達成するためのよりエレガントな方法はありますか? 条件式を使わずに実現できますか?

4

1 に答える 1

14

したがって、整数除算を切り下げるのではなく、切り上げる必要があります。n-1分子に追加することで、これを偽造できます。

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

そうすれば、切り捨てられる値をシフトして、目的の結果を得るのに十分なだけにすることができます。

于 2012-08-09T19:26:10.073 に答える