2012-08-09 45 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

相關問題