区别:1.所占内存空间,2.有效位数不同
1,所占内存空间:
float:4个字节(byte),32个比特位(bit) 数值范围:3.4E-38~3.4E+38
double:8个字节(byte),64个比特位(bit)数值范围:1.7E-308~1.7E+308
以下代码观察两者所占内存空间长度:
#include<stdio.h>
int main()
{
printf("float:%d byte\n", sizeof(float));
printf("double:%d byte\n", sizeof(double));
return 0;
}
运行结果:
2,有效位数:
float:有效位数为6~7位
double:有效位数为15~16位
以下代码观察两者有效位数:
#include<stdio.h>
int main()
{
float a;
double b;
a = 77777.777777;
b = 77777.77777777777;
printf("%f\n%f\n", a, b);
return 0;
}
运行结果:
a是单精度浮点型,有效位数只有7位。所以a的有效数字为77777.78(进行四舍五入)
b是双精度浮点型,有效位数为16位。但一般编译器规定小数后面最多保留6位数,其余四舍五入