x是17,n是4,则结果是4。如果希望结果取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。符合要求。
作者:
Chris Wang
出处:
http://chriswang.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。