单精度浮点数问题
#include<stdio.h>int main(){
float x=1.084202172485504E-19;
printf("%f %x",x,x);
return 0;
}
请问为什么结果会是那样呢?
回答:
%x是输出无符号整数用的,不配套使用的话可能会出问题,浮点数这么输出的话就不知道会发生什么了。。。
回答:
X是当做整型处理了。
具体的浮点数存储格式是IEEE754。
补充
%f是把单精度浮点数以十进制小数方式输出。默认保留6位小数,所以显示不出来。可以指定格式%m.nf,输出总宽度m,小数n位的浮点数。
还有%e是始终以指数方式输出,%g自动选择小数还是指数方式方式。
回答:
数字太小了,
%f
显示不出来,可改用%g
。%x
是用来显示整数的。看浮点数的十六进制表示用%a
。
以上是 单精度浮点数问题 的全部内容, 来源链接: utcz.com/p/195007.html