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。

5、round(x)返回x的四舍五入整数值。

但是在C里面round、ceil和floor()函数是返回double型,

先在网上发现一个简单的向上取整方法;

这里我们用<>表示向上取整,[]表示向下取整,那么怎么来表示这个值呢?

我们可以证明:

=[(N-1)/M]+1    (0

不失一般性,我们设N=Mk+r(0<=r

1)当r>0时,

左边:=<(Mk+r)/M>==k+=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

左边:=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
3
4
5
6
7
#include
double ceil(double x);
double floor(double x);
double round(double x);

ceil(x)返回不小于x的最小整数值(然后转换为double型)。

floor(x)返回不大于x的最大整数值。

round(x)返回x的四舍五入整数值。

给个例子test.c:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include
#include
int main(int argc, const char *argv[])
{
float num = 1.4999;
printf("ceil(%f) is %f\n", num, ceil(num));
printf("floor(%f) is %f\n", num, floor(num));
printf("round(%f) is %f\n", num, round(num));
return 0;
}

编译:$cc test.c -lm执行:$./a.outceil(1.499900) is 2.000000floor(1.499900) is 1.000000round(1.499900) is 1.000000

【向上取整/向下取整】C语言向上或向下取整 函数相关推荐

  1. C语言取小于自身的最大整数,C语言整数类型(含取值范围和长度)

    C语言支持 5 种带符号的整数类型.其中大多数整数类型具有多个同义词,见表1.表1:带符号的标准整数类型类型同义词 signed char intsigned, signed int shortsho ...

  2. 向下箭头 用html语言表示,带有向下箭头的HTML行

    您可以使用伪元素:after和:before: .line { width:70%; } .line:after { content:''; position: absolute; border-st ...

  3. mysql 相除 取整数位,psql除法保留小数,实现向上取整和向下取整操作_PostgreSQL_数据库...

    在psql中,使用1/4得到的结果是0,因为/它取得是整数,但是有些场景我们是需要保留小数的,还有些场景需要向上取整,或者四舍五入的. 今天就总结下psql保留小数的方法 我用到的方法是类型转换,类似 ...

  4. 【向上取整/向下取整】C语言向上或向下取整 函数[内容与错误,请看评论]

    C语言有以下几种取整方法: 1.直接赋值给整数变量.如: int i = 2.5; 或 i = (int) 2.5; 这种方法采用的是舍去小数部分 2.C/C++中的整数除法运算符"/&qu ...

  5. c语言的除法向上还是向下取整,C语言向上或向下取整函数

    点击上方 " 畅学电子 " 一键关注,轻松学习电子知识畅学电子网订阅号每天更新电子行业技术文章,及单片机最新资讯,随时随地轻松学习 C语言有以下几种取整方法: 1.直接赋值给整数变 ...

  6. c语言除法向下取整是加一么,【向上取整/向下取整】C语言向上或向下取整 函数...

    C语言有以下几种取整方法: 1.直接赋值给整数变量.如: int i = 2.5; 或 i = (int) 2.5; 这种方法采用的是舍去小数部分 2.C/C++中的整数除法运算符"/&qu ...

  7. python向上取整的方法_python 取整的两种方法,python向上取整的方法,问题简介:  要把一...

    python 取整的两种方法,python向上取整的方法,问题简介: 要把一 问题简介: 要把一个浮点数(float)整数部分提取出来.比如把"2.1"变成"2" ...

  8. 向下取整符号_22. 为什么 Python 中的整除是向下取整?

    本系列文章译自Python之父 Guido van Rossum 的系列博客"The History of Python".这个博客系列对我们理解Python及其演变很有帮助,经G ...

  9. C语言有以下几种取整方法

    C语言有以下几种取整方法:     1.直接赋值给整数变量.如:     int i = 2.5; 或 i = (int) 2.5;     这种方法采用的是舍去小数部分     2.C/C++中的整 ...

最新文章

  1. Linux进程ID号--Linux进程的管理与调度(三)
  2. Swift字典Dictionary快速文档
  3. IQueryable和IQueryProvider初尝
  4. java 数组的get set_java.lang.reflect.Array.setBoolean()方法
  5. 同学孩子上985大学,每月生活费5000元,大家认为合适吗?
  6. scp ssh: connect to host 192.168.6.129 port 22: Connection refused lost connection
  7. 1000套微信小程序源码模板分享下载,各种类型任意选择
  8. 怎么更改坐标轴标题access_excel图表如何修改x坐标轴数值,excel怎么设置横坐标标题...
  9. (二)探究本质,WebGIS前端地图显示之地图比例尺换算原理
  10. android 5.0rom官方,Android 5.0刷机包开放下载 升级需谨慎
  11. 为何现在手机都是type-c接口,这四个优点知道吗?看完你就知道了
  12. 朗强:画面分割器投影拼接设备与原理
  13. opencv代码示例 -- 创建图片/Canny边缘检测
  14. 女朋友家亲戚让我做个电商网站,说和淘宝一样就行。。。
  15. 拉格朗日插值代码python实现(不掉包)
  16. 计算机小彩蛋大全,未定事件簿彩蛋大全 10个趣味小彩蛋总汇[多图]
  17. 多代理强化学习MARL(MADDPG,Minimax-Q,Nash Q-Learning)
  18. 为啥登录微软账号时,切换dns会好使
  19. 年末了,也来一个年度自我总结
  20. 机器学习——决策树实践(预测隐形眼镜类型)

热门文章

  1. 传统图像处理之随机脉冲噪声检测
  2. html怎么做一个正方形,纯 CSS 实现自适应正方形
  3. k线图的几点外汇知识解析
  4. 【mysql】远程连接服务器数据库出现 Client does not support authentication protocol requested by server的解决方法
  5. [Bootstrap]组件(一)
  6. echarts-去掉垂直网格线
  7. Java中阿里云OSS文件上传工具类
  8. python中point什么意思_Python如何使用菲奥娜来确定这些多边形中的哪些点?,python,利用,fiona,判定,那些,point,在,polygon,内...
  9. 人工智能正在触动和改变的六大行业-阿里云开发者社区
  10. Activiti7---Assignee的值用UEL的POJO实现