c/c++浮点型数据转换成整型数据

  • Post author:
  • Post category:其他


在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  。