我正在尝试通过设置其位来创建浮点数。 我在这里读到,最好的方法可能是使用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.
有人可以解释为什么浮点值为零吗?
整数位0x7fffff
编码非常小的float
值,小于 2−126。%f
转换说明符不会生成足够的数字来显示值。使用%g
或%e
或指定更多数字,例如%.99f
。