【向上取整/向下取整】C语言向上或向下取整 函数
2015-05-05 19:41
1936 查看
C语言有以下几种取整方法:
1、直接赋值给整数变量。如:
int i = 2.5; 或 i = (int) 2.5;
这种方法采用的是舍去小数部分
2、C/C++中的整数除法运算符“/”本身就有取整功能(int / int),但是整数除法对负数的取整结果和使用的C编译器有关。
3、使用floor函数。floor(x)返回的是小于或等于x的最大整数。如:
floor(2.5) = 2
floor(-2.5) = -3
4、使用ceil函数。ceil(x)返回的是大于x的最小整数。如:
ceil(2.5) = 3
ceil(-2.5) = -2
floor()是向负无穷大舍入,floor(-2.5) = -3;ceil()是向正无穷大舍入,ceil(-2.5) = -2。
但是在C里面ceil和floor()函数是返回double型,
先在网上发现一个简单的向上取整方法;
这里我们用<>表示向上取整,[]表示向下取整,那么怎么来表示这个值呢?
我们可以证明:
<N/M>=[(N-1)/M]+1 (0<M<=N,M,N∈Z)
不失一般性,我们设N=Mk+r(0<=r<M),
1)当r>0时,
左边:<N/M>=<(Mk+r)/M>=<k+r/M>=k+<r/M>=k+1
右边:[(N-1)/M]+1=[(Mk+r-1)/M]+1=[k+(r-1)/M]+1=k+1+[(r-1)/M]=k+1
2)当r=0
左边:<N/M>=k
右边:[(N-1)/M]+1=[(Mk-1)/M]+1=[(M(k-1)+M-1)/M]+1=[k-1+(M-1)/M]+1=k+[(M-1)/M]=k
命题得证。
有了这个公式,我们在代码里可以这样计算:
int nn=(N-1)/M +1
.
因为'/'是往下取整的。
1、直接赋值给整数变量。如:
int i = 2.5; 或 i = (int) 2.5;
这种方法采用的是舍去小数部分
2、C/C++中的整数除法运算符“/”本身就有取整功能(int / int),但是整数除法对负数的取整结果和使用的C编译器有关。
3、使用floor函数。floor(x)返回的是小于或等于x的最大整数。如:
floor(2.5) = 2
floor(-2.5) = -3
4、使用ceil函数。ceil(x)返回的是大于x的最小整数。如:
ceil(2.5) = 3
ceil(-2.5) = -2
floor()是向负无穷大舍入,floor(-2.5) = -3;ceil()是向正无穷大舍入,ceil(-2.5) = -2。
但是在C里面ceil和floor()函数是返回double型,
先在网上发现一个简单的向上取整方法;
这里我们用<>表示向上取整,[]表示向下取整,那么怎么来表示这个值呢?
我们可以证明:
<N/M>=[(N-1)/M]+1 (0<M<=N,M,N∈Z)
不失一般性,我们设N=Mk+r(0<=r<M),
1)当r>0时,
左边:<N/M>=<(Mk+r)/M>=<k+r/M>=k+<r/M>=k+1
右边:[(N-1)/M]+1=[(Mk+r-1)/M]+1=[k+(r-1)/M]+1=k+1+[(r-1)/M]=k+1
2)当r=0
左边:<N/M>=k
右边:[(N-1)/M]+1=[(Mk-1)/M]+1=[(M(k-1)+M-1)/M]+1=[k-1+(M-1)/M]+1=k+[(M-1)/M]=k
命题得证。
有了这个公式,我们在代码里可以这样计算:
int nn=(N-1)/M +1
.
因为'/'是往下取整的。
相关文章推荐
- iOS 中常用的几种函数 (向上,向下,四舍五入)取整, 总算是理解了
- js只保留整数,向上取整,四舍五入,向下取整等函数
- js只保留整数,向上取整,四舍五入,向下取整等函数
- js只保留整数,向上取整,四舍五入,向下取整等函数
- C语言除法向上、向下取整
- js只保留整数,向上取整,四舍五入,向下取整等函数
- 牛客网-NowCoder Wannafly挑战赛5-可编程拖拉机比赛-向上取整和向下取整函数
- js Math 中数学函数用法 取整出 向上取整 向下取整
- js Math 中数学函数用法 取整出 向上取整 向下取整
- c++四舍五入函数,向上取整,向下取整函数
- C语言除法向上、向下取整
- iOS 向上取整或向下取整以及常用的数学函数
- js只保留整数,向上取整,四舍五入,向下取整等函数
- C语言除法向上、向下取整
- iOS 中常用的几种函数 (向上,向下,四舍五入)取整, 总算是理解了
- SQL四舍五入、向下取整、向上取整函数介绍
- js只保留整数,向上取整,四舍五入,向下取整等函数
- Python 之 向上取整、向下取整以及四舍五入函数
- js只保留整数,向上取整,四舍五入,向下取整等函数
- js只保留整数,向上取整,四舍五入,向下取整等函数