永发信息网

C语言float转换二进制 gcvt(double,2,char*)为什么不可以?

答案:2  悬赏:0  手机版
解决时间 2021-11-13 13:14
  • 提问者网友:留有余香
  • 2021-11-12 15:43
C语言float转换二进制 gcvt(double,2,char*)为什么不可以?
最佳答案
  • 五星知识达人网友:行雁书
  • 2021-11-12 16:40
gcvt(double,2,char*)
函数实际上是 用 sprintf() 用 %g 格式 把 float转换成 字符串,不是 转换二进制。
第2 个参数 用于 %g 格式 处理成 %f 时 作 有效数字位数 要求。
除非是自己编写的 gcvt(double,2,char*)

float 的 二进制 内存 状态,可以 用 联合体:
union u {
float x;
char s[4];
} U;
float x=123.4567;
U.x = x;
printf("%02x %02x %02x %02x\n", U.s[3], U.s[2], U.s[1],U.s[0]); 打印出来看。
--------
全部回答
  • 1楼网友:雪起风沙痕
  • 2021-11-12 17:07
像整数转换二进制都是精确的数。。。而float是不精确的(不说他表数范围,光【0,1】范围中的小数就有无穷大)。。。所以不能转换(如果float转换double是可以的)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯