69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("sizeof(int)=%d,sizeof(float)=%d\n",sizeof(int),sizeof(float));
for (int a = 2147483455,i=1;i <= 129;i++)
{
a = a+1;
float b = (float)(a);
printf("a = %d,b = %f\n",a,b);
}
return 1;
}
你可以看看结果,int最大到2147483647,而float是单精度,只能保证小数点后7到8位有效,因此在int很大的时候,就会出现超过float能表示的精度从而出现损失,也就是丢位,计算机中都是二进制,浮点数也不例外,可以看到我举得例子是128个值对应float都不变,之后是64个值对应的都不变,因此存在转换损失在所难免。