C语言中float型转换成int型是什么规则

float型前24位是小数部分,后8位是指数部分。整型是16位,那是怎么转换的呢?

#include<stdio.h>

//#include<math.h>

int main()

{

int i;

int i2;

int siz;

float P[14]={0,1,2,3,1,1,5,1,2.3,6.1,500,130,5,0};

siz=sizeof(P);//打印出数组P的字节数

printf("sizeof=%d\r\n",siz);

for(i=0;i<14;i++)

{

printf("P[intp]=%d\r\n",floor(P[i]));//打印出P数组的每一个元素值,以int型显示

}

for(i2=0;i2<14;i2++)

{

printf("P[floatp]=%f\r\n",P[i2]);//打印出P数组的每一个元素值,以float型显示

}

}

#include<stdio.h>

#include<math.h>

int main()

{

int i;

int i2;

int siz;

float P[14]={0,1,2,3,1,1,5,1,2.3,6.1,500,130,5,0};

siz=sizeof(P);//打印出数组P的字节数

printf("sizeof=%d\r\n",siz);

for(i=0;i<14;i++)

{

printf("P[intp]=%d\r\n",floor(P[i]));//打印出P数组的每一个元素值,以int型显示

}

for(i2=0;i2<14;i2++)

{

printf("P[floatp]=%f\r\n",P[i2]);//打印出P数组的每一个元素值,以float型显示

}

}

好像VC++6.0运行的结果只有强制转换有用,不知道是不是我写的语句有问题

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-09-23

1、C语言整型使用原码、反码、补码进行编码,而浮点型使用IEEE754进行编码,所以强制转换基本上是没有任何意思的,因为编码格式不一样。

2、正确的作法是使用c语言标准库中的floor和ceil函数来进行向下或者向上取整。比如:

#include <stdio.h>
#include <math.h>
int main()
{    
    double d = 1.1;
    int up = ceil(d);
    int down = floor(d);
    printf("up=%d\tdown=%d\n", up, down);
    return 0;
}
//结果:up=2 down=1

第2个回答  2010-02-26
C中浮点型转为整型,直接截取小数部分,把整数部分作为结果。不必关心存储细节本回答被提问者采纳
第3个回答  2010-02-26
可以通过强制转换类型.例如 float x=3.555;
int i;
i=(int)x;
printf("i=%d",i);
第4个回答  2010-02-27
直接截取浮点数的整数部分
相似回答