我试图通过设置它的位来创建一个浮点数。 我在这里读到可能最好的方法是使用memcpy。 那是我正在使用的代码
#include <stdio.h>
#include <string.h>
float i2f(int i) {
float result;
memcpy(&result, &i, sizeof(int));
return result;
}
int main() {
printf("Size of int is %d.\n", sizeof(int));
printf("Size of float is %d.\n", sizeof(float));
int i = 0x7fffff;
float f = i2f(i);
printf("int value is %d.\n", i);
printf("float value is %f.\n", f);
return 0;
}
我得到的输出是
Size of int is 4.
Size of float is 4.
int value is 8388607.
float value is 0.000000.
有人可以解释浮动值为零的原因吗?
答案 0 :(得分:3)
整数0x7fffff
的位编码float
值非常小,小于2 -126 。 %f
转换说明符未生成足够的数字来显示该值。使用%g
或%e
或指定更多数字,例如%.99f
。