在c/c++中我们经常由于需要,要把浮点型数据(float、double)转换成整形数据(各种int),下面我给大家介绍一下我所知道的,希望能给大家以后的编程带来方便:
1.普通的强制转换:可实现 “下行”整型化——即将浮点数变成小于它的最大整数
c标准 int i;
double x=5.4;
i=(int)x;
此时我们得到的i的值为5;即将浮点型的小数部分去掉。
c++标准 int i;
double x=5.4;
i=int(x);
所得结果与前者一样,i的值为5,即将浮点型的小数部分去掉。
2.实现四舍五入(m舍n入):
想几舍几入最简单的办法是在原数上加个0.n就可以了,如:想四舍五入就——5.4 int(5.4+0.5)=5
5.5 int(5.5+0.5)=6
又如:想二舍三入就——5.2 int(5.2+0.7)=5
5.3 int(5.3+0.7)=6
3.实现“上行”整型化:即
①使用c/c++标准库函数:ceil() 需要加载头文件c中加载#include<math.h> c++中加载#include<cmath>
具体如:int i; double x=5.4; i=ceil(x); // i 等于6
int i; double=2.0; i=ceil(x); // i 等于2
②自己编写函数,实现“上行”整型化:即将浮点数转换成大于它的最小的整数。
举例—if(x-(int)x) i=(int)x+1; //如果 x-(int)x不等于0(这里实际上是 大于0),则 i 等于 i 的“下行”整型化加1
else i=(int)x; //否则(即x-(int)x=0) i 等于(int)i 这里表面上是进行了“下行”运算,实际上
x=n.0 (int) x 就是将 2.0 变成 2 。