我找到了一种通过以下答案将浮点数转换为c的方法:Convert float to binary in C,但是我不确定答案*((int*)&f)
中使用的代码实际上是如何转换数字的。它到底是做什么的?
答案 0 :(得分:7)
它会调用未定义的行为,这意味着您的程序如果可以访问,则无效。
某人打算要做的是将float
的位重新解释为int
,假设int
是32位,并且可能也是float
是IEEE单。
有两种正确的方法(用int
代替uint32_t
以删除第一个无用的假设)
(union { float f; uint32_t i; }){f}.i
uint32_t i; memcpy(&i,&f,sizeof i);