【向上取整/向下取整】C语言向上或向下取整 函数
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语言向上或向下取整 函数相关推荐
- C语言取小于自身的最大整数,C语言整数类型(含取值范围和长度)
C语言支持 5 种带符号的整数类型.其中大多数整数类型具有多个同义词,见表1.表1:带符号的标准整数类型类型同义词 signed char intsigned, signed int shortsho ...
- 向下箭头 用html语言表示,带有向下箭头的HTML行
您可以使用伪元素:after和:before: .line { width:70%; } .line:after { content:''; position: absolute; border-st ...
- mysql 相除 取整数位,psql除法保留小数,实现向上取整和向下取整操作_PostgreSQL_数据库...
在psql中,使用1/4得到的结果是0,因为/它取得是整数,但是有些场景我们是需要保留小数的,还有些场景需要向上取整,或者四舍五入的. 今天就总结下psql保留小数的方法 我用到的方法是类型转换,类似 ...
- 【向上取整/向下取整】C语言向上或向下取整 函数[内容与错误,请看评论]
C语言有以下几种取整方法: 1.直接赋值给整数变量.如: int i = 2.5; 或 i = (int) 2.5; 这种方法采用的是舍去小数部分 2.C/C++中的整数除法运算符"/&qu ...
- c语言的除法向上还是向下取整,C语言向上或向下取整函数
点击上方 " 畅学电子 " 一键关注,轻松学习电子知识畅学电子网订阅号每天更新电子行业技术文章,及单片机最新资讯,随时随地轻松学习 C语言有以下几种取整方法: 1.直接赋值给整数变 ...
- c语言除法向下取整是加一么,【向上取整/向下取整】C语言向上或向下取整 函数...
C语言有以下几种取整方法: 1.直接赋值给整数变量.如: int i = 2.5; 或 i = (int) 2.5; 这种方法采用的是舍去小数部分 2.C/C++中的整数除法运算符"/&qu ...
- python向上取整的方法_python 取整的两种方法,python向上取整的方法,问题简介: 要把一...
python 取整的两种方法,python向上取整的方法,问题简介: 要把一 问题简介: 要把一个浮点数(float)整数部分提取出来.比如把"2.1"变成"2" ...
- 向下取整符号_22. 为什么 Python 中的整除是向下取整?
本系列文章译自Python之父 Guido van Rossum 的系列博客"The History of Python".这个博客系列对我们理解Python及其演变很有帮助,经G ...
- C语言有以下几种取整方法
C语言有以下几种取整方法: 1.直接赋值给整数变量.如: int i = 2.5; 或 i = (int) 2.5; 这种方法采用的是舍去小数部分 2.C/C++中的整 ...
最新文章
- Linux进程ID号--Linux进程的管理与调度(三)
- Swift字典Dictionary快速文档
- IQueryable和IQueryProvider初尝
- java 数组的get set_java.lang.reflect.Array.setBoolean()方法
- 同学孩子上985大学,每月生活费5000元,大家认为合适吗?
- scp ssh: connect to host 192.168.6.129 port 22: Connection refused lost connection
- 1000套微信小程序源码模板分享下载,各种类型任意选择
- 怎么更改坐标轴标题access_excel图表如何修改x坐标轴数值,excel怎么设置横坐标标题...
- (二)探究本质,WebGIS前端地图显示之地图比例尺换算原理
- android 5.0rom官方,Android 5.0刷机包开放下载 升级需谨慎
- 为何现在手机都是type-c接口,这四个优点知道吗?看完你就知道了
- 朗强:画面分割器投影拼接设备与原理
- opencv代码示例 -- 创建图片/Canny边缘检测
- 女朋友家亲戚让我做个电商网站,说和淘宝一样就行。。。
- 拉格朗日插值代码python实现(不掉包)
- 计算机小彩蛋大全,未定事件簿彩蛋大全 10个趣味小彩蛋总汇[多图]
- 多代理强化学习MARL(MADDPG,Minimax-Q,Nash Q-Learning)
- 为啥登录微软账号时,切换dns会好使
- 年末了,也来一个年度自我总结
- 机器学习——决策树实践(预测隐形眼镜类型)
热门文章
- 传统图像处理之随机脉冲噪声检测
- html怎么做一个正方形,纯 CSS 实现自适应正方形
- k线图的几点外汇知识解析
- 【mysql】远程连接服务器数据库出现 Client does not support authentication protocol requested by server的解决方法
- [Bootstrap]组件(一)
- echarts-去掉垂直网格线
- Java中阿里云OSS文件上传工具类
- python中point什么意思_Python如何使用菲奥娜来确定这些多边形中的哪些点?,python,利用,fiona,判定,那些,point,在,polygon,内...
- 人工智能正在触动和改变的六大行业-阿里云开发者社区
- Activiti7---Assignee的值用UEL的POJO实现