在计算机中存储数据都是以0、1来表示,整数可以很容易地在十进制和二进制之间切换,但小数就不那么容易了-----因为小数点的存在。在计算机语言当中,人们将数据根据是否有小数点分为了整型以及浮点类型。整型的存储是简单的,但浮点类型的存储是一个很大的挑战(存储一个小数)。人们为了方便存储小数,通常采用科学记数法来表示浮点数,比如3.12 x 10 ^2, 5.874545 x 10 ^ 5等。这样的好处是:小数点固定了。
例如:9.5的二进制形式为1001.1,按科学计数法为:1.0011 x 2^3
所以公式为:
X = a * 2^e
a为浮点数的二进制表示,范围为[1,2) ;
e为小数点移动的位数;
float类型**
对于float型数据,其长度是4个字节,右边23位用来表示小数点后面的数字,中间8位用来表示e,左边一位用来表示正 负。
double类型
对于double型数据,其长度是8个字节,右边52位用来表示小数点后面的数字.中间11位表示e,左边一位用来表示正负。如下图:
| 符号位 | 指数位 | 尾数 | 指数偏移量
| float类型 | 1位 | 8位 |23位 | 127
|double类型 | 1位 | 11位 |51位 | 1023
指数偏移量:2 ^(k - 1),k 为指数为个数