C语言取整(含强制转换)
目录
- 0 应用于
- 1 浮点数取整
- 1.1 强制转换
- 1.2 函数
- 1.2.1floor()
- 1.2.2 ceil()
- 1.2.3 rint()
- 1.2.4 round()
- 1.3 验证代码
- 1.4 总结
- 2 整数取整
约定:
long double p;long long q;
0 应用于
https://blog.csdn.net/qq_40893824/article/details/105907220 1.3 节
1 浮点数取整
1.1 强制转换
q = (long long )p;
1.2 函数
1.2.1floor()
q = floor(p);
1.2.2 ceil()
q = ceil(p);
1.2.3 rint()
q = rint(p);
1.2.4 round()
q = round(p);
1.3 验证代码
#include<bits/stdc++.h>
using namespace std;int main()
{long double p;long long q;scanf("%Lf", &p);while(1){getchar(); printf("p = % Lf\n\n", p) ;//1 (long long) 强制转换 取整 舍去小数部分 cout << "q = (long long )p; 后 舍去 " << p << " 小数部分" << endl;q = (long long )p;cout << "sizeof( (long long )p ) = " << sizeof((long long )p) << endl; printf("q = %lld\n\n", q);//2 floor(p) 强制转换 取整 小于等于 x的最大整数 返回double型cout << "q = floor(p); 后 小于等于 " << p << " 的最大整数" << endl;q = floor(p);cout << "sizeof(floor(p)) = " << sizeof(floor(p)) << endl;printf("q = %lld\n\n", q);//3 ceil(p) 强制转换 取整 大于x的最小整数 返回double型cout << "q = ceil(p); 后 大于 " << p << " 的最小整数" << endl;q = ceil(p);cout << "sizeof(ceil(p)) = " << sizeof(ceil(p)) << endl;printf("q = %lld\n\n", q);//4 rint(p) 强制转换 取整 四舍五入 (+-)n.5时往绝对值小的方向 cout << "q = rint(p); 后 "<< p << " 四舍五入 ( (+-)n.5时往绝对值小的方向 )" << endl;q = rint(p);cout << "sizeof(rint(p)) = " << sizeof(rint(p)) << endl;printf("q = %lld\n\n", q);//4 round(p) 强制转换 取整 四舍五入 (+-)n.5时往绝对值小的方向 cout << "q = round(p); 后 "<< p << " 四舍五入 ( (+-)n.5时往绝对值大的方向 )" << endl;q = round(p);cout << "sizeof(round(p)) = " << sizeof(round(p)) << endl;printf("q = %lld\n\n\n", q);scanf("%Lf", &p);}system("pause");return 0;
}
返回类型 用 sizeof() 判断:
1.4 总结
使用形式 | 做法 | 返回 | |
强制转换 | (数据类型)p | 去小数部分 | 整数 |
函数 | floor(p) | 小于等于 p的最大整数 | 整数 |
ceil(p) | 大于p的最小整数 | 浮点数double | |
rint(p) | 四舍五入,(+-)n.5时往绝对值小的方向 | 浮点数double | |
round(p) | 四舍五入,(+-)n.5时往绝对值小的方向 | 整数 |
2 整数取整
结论:
在0 < M <= N, M, N∈Z 时,int nn = (N-1) / M +1,其中 除法 ‘/’ 往下取整
推导:
设N = Mk + r (0 <= r < M,k∈Z)
< > 向上取整,[ ] 向下取整
当 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
当 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
C语言取整(含强制转换)相关推荐
- c语言取整方法和四舍五入和 %d 和 %04d 和%-4d有什么区别
c语言取整方法 (1)使用int强制转换 使用int强制转换的结果就是去掉小数部分.int a; a=int(1.2); //a=1 a=int(-1.2); //a=-1 (2)使用floor函数向 ...
- C 语言中结构体强制转换--实验
2019独角兽企业重金招聘Python工程师标准>>> 对于C语言中结构体强制转换做了如下实验, 或许可以解惑一些问题 对于结构体, 我理解的属性有: 成员的顺序, 成员的类型,成员 ...
- c语言变量对那一次赋值有效,C语言取整+滤波方法.docx
C语言取整+滤波方法.docx 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...
- C 语言取整的几种方法
C 语言取整的几种方法 1.doublex; 2.printf("%d",int(x)) 取整; 3.printf("%d",int(x+0.5)) ...
- c语言用int取整取了小数_[c语言取整算法]C语言中float型数据怎么取整数部分算法或取小数部分...
C语言中float型数据怎么 取整数部分算法 或取小数部分 float福n=12.223; int x=(int)n; float y=n-(float)x; C语言有哪些取整函数? C语言有以下几种 ...
- 计算机c语言运算符号取整,c语言取整(c语言四舍五入取整)
C语言有以下几种取整方法:1. 直接赋值给整数变量.如:int i = 2.5: 或 i = (int) 2.5: 这种方法采用的是舍去小数部分2. 使用floor函数.floor(x)返回的是小于或 ...
- c++语言取整为什么要加0.5_C/C++之取整函数
C/C++之取整函数 后面的double x放的是你的浮点型参数. 取整函数向上取整和向下取整有现成的函数.不过它们的缺点是正数和负数用到的函数是相反的容易混淆. 函数名函数说明------>右 ...
- c语言用int取整取了小数_c语言小数取整的公式 c语言取整规则
C语言,三种取整舍小数的方法有什么? C语言有以下舍入方法: 1.直接给整型变量赋值.例如:int i=2.5或i=(int)2.5,此方法对小数部分进行舍入 2,C/C中的整数除法运算符有舍入函数( ...
- C 语言取整的几种方法6,C语言有以下几种取整方法:
C语言有以下几种取整方法: 1.直接赋值给整数变量.如: int i = 2.5; 或 i = (int) 2.5; 这种方法采用的是舍去小数部分. 2.C/C++中的整数除法运算符&qu ...
最新文章
- ceph 代码分析 读_Ceph OSD磁盘异常流量问题分析
- MATLAB 数值数组和字符串转换
- 某些情况下安卓引入so冲突的解决
- PHP关键字this指向当前对象指针
- 前端学习(2887):如何短时间内实现v-for createApp解决方案
- 设计一种网络分播软件
- 翻译:AI数据科学认证-2021年的最佳选择
- [Code] 收集各种语言对图片的处理算法实现 图片模糊
- git工作流学习记录
- 计算机操作系统第二章测试题及答案
- 笔试的图形推理题怎么做?
- vs2015离线安装QT的vsix工具
- dbfs和dbm的换算_「清晰易懂」dBFS、dBm、dBV、dBW、0dB、-3dB概念解析
- 快速排序(c语言实现)
- Orge的一本书下载
- 修改上传资源积分c币教程指导
- 三星支付存在漏洞可导致黑客进行交易劫持
- 一度智信:这些方法,帮你解决网店权重下降问题
- flac格式歌曲如何转换成mp3格式,flac转mp3详细图文教程 1
- ES6箭头函数以及promise/async/await测试案例