浮点数就是所谓的小数,一个float类型的对象占据4个字节共32比特。

版权声明

本文可以在互联网上自由转载,但必须:注明出处(作者:海洋饼干叔叔)并包含指向本页面的链接。

本文不可以以纸质出版为目的进行改编、摘抄。

这32个比特以类似于科学计数法的形式来表达一个浮点数,按照IEEE 754标准,其数学表示为:


$$ \pm M\times 2^{E} $$

如下图所示,最高的1位(第31位)用做符号位,接着的 8 位(第23-30位)是指数E,剩下的 23 位(第0-22位)为有效数字 M。

float32

相对于float,double类型使用8个字节来存储一个浮点数,它的储值范围以及精度都会高一些。习惯上,我们称float为单精度浮点数,double为双精度浮点数。所有的浮点数类型都是有符号的。

受限于有效数字的位数,浮点数的精度受到限制,会存在微小的误差。

以上为32比特float浮点数的内存结构,64位double及128位long double的基本结构与此类似,细节请查询IEEE 754标准。