编程:单精度浮点型数据与双精度浮点型数据杂谈

单精度浮点型数据与双精度浮点型数据杂谈

文章目录

序言

  在编程计算中,浮点型数据的运算常常用到。嵌入式编程中对于数据的传输,一般是扩大N被取整,在应用程序中虽然可以被直接使用,但是我个人常常思考浮点型数据具体在内存中的表现形式。本文经过查询参考资料后,做为一篇记录型的文章。如果错误之处,还望指正。

浮点数据类型

  浮点型数据在编程中分为单精度浮点型数据与双精度浮点型数据。

  常用float和double表示。针对Matlab变成需注意单精度表示为single。

内存占用

  单精度浮点型数据在内存中通常占用4Byte空间,双精度占用8Byte空间

  浮点型数据在内存中的整数和小数部分分别在不同的bit上来表示:

    float:0~22 bit表示小数部分;23~30 bit表示整数部分;31 bit表示符号。

    double:0~51 bit表示小数部分;52~62 bit表示整数部分;63 bit表示符号

    注意:浮点型数据不存在无符号数

精度与取值范围

  float类型精度为10E-7;double类型精度为10E-16。

  需要注意的是:float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字; double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。

  同时受限于精度的影响,浮点型数据不可以直接用来判断某个条件的真或假(非)。

c 复制代码
float a=1.0
if(a == 1)
{
    printf("true");
}
else
{
    printf("false);
}

如上这种判断有可能会导致判断错误。正确方式应为

c 复制代码
float a=1.0
if(a-1.0 < 0.0000001)
{
    printf("true");
}
else
{
    printf("false);
}

  取值范围

  float:-3.40282E+308~-1.7549E-038 ; 1.17549E-038~3.40282E+308

  double:-1.79769E+308~ -2.22507E-308;

      2.22507E-308~1.79769E+308

相关推荐
dire_77717 小时前
TH26027A开尔文夹子线缆问题导致同惠TH2822电桥测量不准
笔记
宝绿特塑业再生科技18 小时前
板材收缩率不稳,户外家具装配尺寸为何对不上:从切割尺寸变化到接缝不一的系统性排查与对策
笔记·科技·学习·生活·户外家具·hdpe再生颗粒·hdpe
~城南花已开~18 小时前
Intel E810 SR-IOV VF Spoofcheck 防伪造测试-KVM3
服务器·网络·笔记·学习·ubuntu·etl工程师
hss1234567819 小时前
天津婚房装修怎么选:从整装、定制到全案落地的技术决策框架
笔记
职豚求职小程序刷题19 小时前
中国平安社招IQ测评+16PF怎么准备?
笔记
春和景明36019 小时前
27号笔记
笔记
志尊宝19 小时前
AI原生前端开发(028):AI辅助的调试与错误修复
人工智能·笔记·重构·ai-native
宽容人厚载物19 小时前
芯驰 E3620 XTRG 配置笔记:EB 配置、典型实例与注意事项
笔记
熊猫钓鱼>_>21 小时前
端侧 NPU 轻量大模型推理接入笔记【鸿蒙心迹】
开发语言·笔记·华为·ai编程·harmonyos·鸿蒙
David猪大卫21 小时前
【C++修炼】STL容器—stack与queue
c语言·开发语言·数据结构·c++·经验分享·笔记·学习