1.浮点型数据存储方式
浮点型数据在内存中是以符号位、指数位和尾数位三部分存储。
符号位 | 指数位 | 尾数位 | 指数偏差 | 精度 | |
float | 1 | 8 | 23 | 127 | 7位 |
double | 1 | 11 | 52 | 1023 | 15位 |
2.float示例
精度:精度是指精确到数值的某一位,是指float类型可以表示的数值最大的位数。
-1)sign指代符号位,括号里面指代的是数据的精度,隐藏的1是固定不变的,括号右边指代的是指数部分,其中127是差值。这样的话,value的取值范围是根据上式得到的,所以其取值范围是-2^128~2^128。
0.15625的存储格式为0x3E200000,即b0 01111100 01000000000000000000000
3.double示例
与上述推导类似。
4.float与double互相转换注意
如果浮点型数据只有整数部分,可以强制转为整型;反之,亦然。但是不能进行运算后再转换。
float型数据如果有小数部分,强制转为double型数据,有精度丢失;
double型数据如果有小数部分,只要不超过float有效数据,不会有精度丢失。
整型转为double,没有精度丢失