新人求助 关于数据类型精度的几个问题
程序1:#include<stdio.h>
void main()
{
float a;
double b;
a=33333.33333;
b=33333.33333333333333;
printf("a=%f\n b=%f\n",a,b);
}
结果:
a=33333.332031
b=33333.333333
嗯……知道单精度浮点型的有效数字是7位,但是输出结果按双精度输出时末尾的2031是怎么回事……
程序2
#include<stdio.h>
void main()
{
float a,b;
int c,d;
a=123456.789e3;
b=a+20;
c=123456789;
d=c+20;
printf("b=%f\n",b);
printf("d=%f\n",d);
}
输出结果:
b=123456816.000000
d=0.000000
b为什么不等于123456809.000000?
还有d为什么整数部分是0?
求大神们指教