您现在的位置: 主页 > 嵌入式软件 > C/C++ > C语言向上或向下取整函数
本文所属标签:
为本文创立个标签吧:

C语言向上或向下取整函数

来源:网络整理 网络用户发布,如有版权联系网管删除 2018-09-04 

点击上方 “ 畅学电子 ” 一键关注,轻松学习电子知识

畅学电子网订阅号每天更新电子行业技术文章,及单片机最新资讯,随时随地轻松学习

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. 在微信上点击右上角”+" 点击“添加朋友" → 在"查找公众号"里搜索" 畅学电子 "即可查找并关注
2. 搜索微信号" 畅学电子 "也可查找并关注我们
如何查看往期的历史消息点击右上角图标进入"账号资料" → "查看历史消息"
畅学电子订阅号微信名:畅学电子
每天更新电子行业各种知识,及单片机最新资讯,来开启你的视觉盛宴吧
畅学电子服务号微信名:畅学电子
一个新型的知识分享平台,在线查看畅学电子网的最新文章、在线视频等,带你进入电子工程师技术开发学习的世界

==> 前往 www.eeskill.com 学习更多知识!




              查看评论 回复



嵌入式交流网主页 > 嵌入式软件 > C/C++ > C语言向上或向下取整函数
 电子 取整 畅学

"C语言向上或向下取整函数"的相关文章

网站地图

围观()