北京企业网站建设公司,Wordpress不同分类下分页,茶百道加盟费大概要多少,抖音代运营电销话术单精度浮点型数据与双精度浮点型数据杂谈 文章目录 单精度浮点型数据与双精度浮点型数据杂谈序言浮点数据类型内存占用精度与取值范围 取值范围 序言 在编程计算中#xff0c;浮点型数据的运算常常用到。嵌入式编程中对于数据的传输#xff0c;一般是扩大N被取整#xff…单精度浮点型数据与双精度浮点型数据杂谈 文章目录 单精度浮点型数据与双精度浮点型数据杂谈序言浮点数据类型内存占用精度与取值范围 取值范围 序言 在编程计算中浮点型数据的运算常常用到。嵌入式编程中对于数据的传输一般是扩大N被取整在应用程序中虽然可以被直接使用但是我个人常常思考浮点型数据具体在内存中的表现形式。本文经过查询参考资料后做为一篇记录型的文章。如果错误之处还望指正。
浮点数据类型 浮点型数据在编程中分为单精度浮点型数据与双精度浮点型数据。 常用float和double表示。针对Matlab变成需注意单精度表示为single。
内存占用 单精度浮点型数据在内存中通常占用4Byte空间双精度占用8Byte空间 浮点型数据在内存中的整数和小数部分分别在不同的bit上来表示 float0~22 bit表示小数部分23~30 bit表示整数部分31 bit表示符号。 double0~51 bit表示小数部分52~62 bit表示整数部分63 bit表示符号 注意浮点型数据不存在无符号数
精度与取值范围 float类型精度为10E-7double类型精度为10E-16。 需要注意的是float:2^23 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字; double:2^52 4503599627370496,一共16位,同理,double的精度为15~16位。 同时受限于精度的影响浮点型数据不可以直接用来判断某个条件的真或假非。
float a1.0
if(a 1)
{printf(true);
}
else
{printf(false);
}如上这种判断有可能会导致判断错误。正确方式应为
float a1.0
if(a-1.0 0.0000001)
{printf(true);
}
else
{printf(false);
}取值范围 float-3.40282E308~-1.7549E-038 1.17549E-038~3.40282E308 double-1.79769E308~ -2.22507E-308 2.22507E-308~1.79769E308