Gar*_*eth 0 c++ floating-point
我试图float从我从这里得到的十六进制表示创建一个.为表示32.50002,该站点将IEEE 754十六进制表示为0x42020005.
在我的代码中,我有这个:float f = 0x42020005;.但是,当我打印该值时,我得到的1.10E+9不是32.50002.为什么是这样?
我正在使用Microsoft Visual C++ 2010.
为float变量via =赋值时,如果不分配其内部表示,则赋值.十进制的0x42020005是1107427333,这是您要分配的值.
float无法以独立于平台的方式检索a 的基础表示.但是,做一些假设(即float实际上使用的是IEEE 754格式),我们可以耍一下:
float f;
uint32_t rep = 0x42020005;
std::memcpy(&f, &rep, sizeof f);
Run Code Online (Sandbox Code Playgroud)
会给出理想的结果.