浮点数以整形输出

来源:百度知道 编辑:UC知道 时间:2024/09/23 05:15:51
以下两行代码:
float a=1.2f;
printf("%d",a);
如果变换a=1.0f或者其他 输出都会不同 有很多情况是0 为什么呢?注:在VC6.0上测试的。按理说我把浮点数转换成对应的32位二进制数,然后再转化成对应的十进制整数输出 不就应该是结果吗 但是输出的内容和预想的不一样 为什么很多情况下输出的是0呢?如果溢出 输出也不应该是0 啊。另外,其他情况下输出的数也不是随机的 每次对应一个浮点数输出的整形都是一样的 哪位高手给解释解释啊~ 我的分全给你都行 谢谢啊~
确实啊

在输出a时,会把a原来在内存中float的存储形式当作int的存储形式来对待进行输出。
这个涉及到单双精度浮点数的IEEE标准格式,如果有兴趣可以去查查...

虽然我不知道怎么解释,但我觉得很有意思。
可以看一下:

float a=1.2f;
printf("%f\t%d\n",a,a);
printf("%d\t%f\n",a,a);
两次输出的结果不同啊。