float、double精度

1.浮点型数据存储方式

浮点型数据在内存中是以符号位、指数位和尾数位三部分存储。


符号位
指数位
尾数位
指数偏差
精度
float
1
8
23
127
7位
double
1
11
52
1023
15位

2.float示例

精度:精度是指精确到数值的某一位,是指float类型可以表示的数值最大的位数。

图片.png

-1)sign指代符号位,括号里面指代的是数据的精度,隐藏的1是固定不变的,括号右边指代的是指数部分,其中127是差值。这样的话,value的取值范围是根据上式得到的,所以其取值范围是-2^128~2^128。

图片.png

0.15625的存储格式为0x3E200000,即b0 01111100 01000000000000000000000

3.double示例

与上述推导类似。

4.float与double互相转换注意

如果浮点型数据只有整数部分,可以强制转为整型;反之,亦然。但是不能进行运算后再转换。

float型数据如果有小数部分,强制转为double型数据,有精度丢失;

double型数据如果有小数部分,只要不超过float有效数据,不会有精度丢失。

整型转为double,没有精度丢失


下一篇: