我有一个32位无符号值,我想转换为ieee 754浮点.
这是我的变量:
unsigned int val = 0x3f800000;
float floatVal;
Run Code Online (Sandbox Code Playgroud)
我知道我必须执行以下操作才能将uint值正确地转换为我期望的iee 754浮点值1.0
floatVal = *((float*)&val);
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么floatVal =(float)val不会返回相同的结果?而不是1.0 floatVal获取值1.0653532e + 009.我相信这部分是由于在这种类型转换过程中丢失了比特,而这些比特是通过指针转换保留的,但更详细的解释将非常受欢迎.
c ×1