float究竟怎样读取磁盘的二进制数据?
这时C源码: #include <stdio.h>
int main(void)
{
float a = 3.4e-38/10; float g=a*10e38;
float b = 3.4e-38/100; float h=b*10e38;
float c = 3.4e-38/1000; float i=c*10e38;
float d = 3.4e-38/10000; float j=d*10e38;
float e = 3.4e-38/100000; float k=e*10e38;
float f = 3.4e-38/1000000; float l=f*10e38;
printf("g=%f\n", g);printf("a=%e\n", a);
printf("h=%f\n", h);printf("b=%e\n", b);
printf("i=%f\n", i);printf("c=%e\n", c);
printf("j=%f\n", j);printf("d=%e\n", d);
printf("k=%f\n", k);printf("e=%e\n", e);
printf("l=%f\n", l);printf("f=%e\n", f);
getchar();
return 0;
}
结果是
g=3.400000
a=3.400000e-039
h=0.340000
b=3.399998e-040
i=0.034000
c=3.399970e-041
j=0.003400
d=3.399550e-042
k=0.000341
e=3.405155e-043
l=0.000034
f=3.363116e-044
我真的很想明白a,b,c,d,e,f的那些值是如何出来的,明白点就是:a,b,c,d,e,f所代表的磁盘上相应的数据存储单位的状态。
还有就是产生a,b,c,d,e,f这些值时,系统会逐个降低它们的精度,那么系统具体是如何通过操作磁盘上相应的数据存储单位的状态来实现的。
上面的数据a,b,c,d,e,f显然不是我们“人脑”的四舍五入得出的,如果是人脑得出的,一定只有3,4,0这三个数字而已,不会有其它数字的。
希望前辈们帮帮我,这对于理解这些数据的产生有很大意义!