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

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

2024-10-14 10:14:56

#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运行的结果只有强制转换有用,不知道是不是我写的语句有问题

风间白鹿

2024-10-14 09:56:34

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
我不勇敢

2024-10-14 09:54:22

C中浮点型转为整型,直接截取小数部分,把整数部分作为结果。不必关心存储细节
暖妹

2024-10-14 09:12:56

可以通过强制转换类型.例如 float x=3.555;
int i;
i=(int)x;
printf("i=%d",i);
千囚栀愿

2024-10-14 08:17:02

直接截取浮点数的整数部分