关于printf()函数打印时,格式控制符的使用问题
double value =36.0;
printf (“%d”,value);
为什么打印出来的结果是 0 ?不应该是36 吗?按照打印出来的结果,浮点数在计算机里面的存储肯定和整数的存储方式不一样,那浮点数在计算机里面是怎样存储的?
int value = 36;
printf ("%lf",value);
这个结果也是0.000000;
[解决办法]
#define SHOW_BYTES(value) \
{ \
int i; \
for (i = 0; i < sizeof(value); ++i)\
{\
printf("%x ", *(((unsigned char *)&value) + i));\
}\
}
double value = 36.0;
SHOW_BYTES(value);
输出:
0 0 0 0 0 0 42 40
%d的格式将会输出int类型数据的值,如果是4字节的话,将会输出低4字节0的整形数值
[解决办法]
是的。你百度搜下 ruanyifeng 浮点数 就可以了。