单精度浮点数问题

#include<stdio.h>
int main(){
    float x=1.084202172485504E-19;
    printf("%f %x",x,x);
    return 0;
}

图片描述

请问为什么结果会是那样呢?

阅读 4.1k
3 个回答

%x是输出无符号整数用的,不配套使用的话可能会出问题,浮点数这么输出的话就不知道会发生什么了。。。

X是当做整型处理了。
具体的浮点数存储格式是IEEE754。

补充
%f是把单精度浮点数以十进制小数方式输出。默认保留6位小数,所以显示不出来。可以指定格式%m.nf,输出总宽度m,小数n位的浮点数。
还有%e是始终以指数方式输出,%g自动选择小数还是指数方式方式。

  • 数字太小了,%f显示不出来,可改用%g

  • %x是用来显示整数的。看浮点数的十六进制表示用%a

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题