单精度浮点数问题

#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

回到顶部