c语言有关问题。

c语言问题。。。
#include<stdio.h>
int main()
{
double a=334.2222;
printf("%d",a);
return 0;
}


。。。。。。输出结果是563499709.。。为什么?我知道是应该用%lf.......我是想知道用%d为什么会输出563499709?

------解决方案--------------------
可以看看浮点数的存储格式

浮点数的存储格式 -- Elegant C++ -- 编程爱好者博客
------解决方案--------------------
这就是浮点数存储的问题了……
------解决方案--------------------
请 google IEEE754 标准
------解决方案--------------------
为什么这么多人和 printf() 较劲?
------解决方案--------------------
由于浮点型和整型的存储方式是不一样,你可以用强制类型转换符,按你那种输出方式,是直接将内存中的存储浮点型的二进制直接以整型读出,所以出现你那种情况,我也试了一下。也是你这种情况。
------解决方案--------------------
这是编译器将float存储解释为Int的结果,不要深究啦,现在的项目绝大多数都基于GUI的,即使一些console来显示的也很简单的。
------解决方案--------------------
这是编译器将float存储解释为Int的结果,不要深究啦,现在的项目绝大多数都基于GUI的,即使一些console来显示的也很简单的。