写程序用到浮点转换,找到网上的在线工具,了解浮点的存储原理。最近正好开始练习QT,想着浮点转换功能简单易上手,就自己手撸一个,纯当练习。
实名吐槽 QT
打包后的 exe
文件实在是太大了,使用打包工具 Enigma Virtual Box
生成的 exe
文件高达50M, 压缩后也要 20M 。实在不好意思拿出手给别人使用。
代码放在Github上,有需要可以参考
完成图
进制转换
浮点数据按照 IEEE-754
标准在内存中存储,单精度4个字节,双精度8个字节。
而浮点和 16、2 进制实际并没有转换, 只是针对内存数据的解释方式不同而已,伪代码如下:
int main ()
{
union {
uint32_t wValue;
float fValue;
} tUnionData;
tUnionData.wValue = 0x3dcccccd;
printf("%f", tUnionData.fValue);
// 输出 0.100000
}
参考内容
- https://www.h-schmidt.net/FloatConverter/IEEE754.html