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