单精度、双精度、长双精度占字节数和精度
话不多说,直接上代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
//float
//double
//long double
printf("------------------------------------\n");
printf("1.浮点类型存储:\n");
printf("float:%lu\n",sizeof(float));
printf("double:%lu\n",sizeof(double));
printf("long double:%lu\n",sizeof(long double));
printf("------------------------------------\n");
printf("2.浮点数表示方法:\n");
float f1 = 0.0008; //默认精度为6位
float f2 = 8E-3;
float f3 = 8000;
float f4 = 8E+3;
printf("f1:%f\n",f1);
printf("f2:%f\n",f2);
printf("f3:%f\n",f3);
printf("f4:%f\n",f4);
printf("------------------------------------\n");
printf("3.浮点数精度问题:\n");
float a = 1.12345678901234567890;
double b = 1.12345678901234567890;
long double c = 1.12345678901234567890;
printf("float:[%.30f]\n",a);
printf("double:[%.30lf]\n",b);
printf("long double:[%.30Lf]\n",c);
//printf("立即推:绝大多数的浮点数是不能精确表示的!\n");
//printf("float精度为6位\n");
//printf("double精度为15-16位\n");
//printf("Long double精度为15-16位,具体看编译器,不小于double\n");
return 0;
}
输出结果:
------------------------------------
1.浮点类型存储:
float:4
double:8
long double:16
------------------------------------
2.浮点数表示方法:
f1:0.000800
f2:0.008000
f3:8000.000000
f4:8000.000000
------------------------------------
3.浮点数精度问题:
float:[1.123456835746765100000000000000]
double:[1.123456789012345700000000000000]
long double:[0.000000000000000000000000000000]
注:本人用的dec++编译器貌似不支持长双精度,所以打出来都是0。