整數整除的Flooring和Ceiling達式

假設變量x和n是兩個正整數,我們知道x/n這個表達式的結果要取Floor,例如x是17,n是4,則結果是4。如果希望結果取Ceiling應該怎麼寫表達式呢?例如x是17,n是4,則結果是5;x是16,n是4,則結果是4。

     一道很基礎的題,答案是:(x+n-1)/n


下面給出證明:


    1. 設x=kn,k爲整數,即x爲n的整數倍。則(x+n-1)/n=(kn+n-1)/n=((k+1)n-1)/n,此時分子沒有達到n的k+1倍,但大於等於n的k倍,默認計算取下整則爲k。符合要求。


    2.設x=kn+m,k爲整數,m爲整數且0<m<n。則(x+n-1)/n=(kn+m+n-1)/n=((k+1)n+m-1)/n。此時分子的大於等於(k+1)n,小於(k+2)n,按照默認計算應該爲k+1。符合要求。


在C語言中整數除法取的既不是Floor也不是Ceiling,無論操作數是正是負總是把小數部分截掉,在數軸上向零的方向取整(Truncate toward Zero)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章