关于浮点数的表示:
关于为什么相同位数 ,int 精度范围更高,float表示范围更大的问题?
答:
int32 在内存中的分配是:1bit(符号位)31bits(实际数字位)
float 在内存中的分配情况是:1bit(符号位) 8bits(指数位) 23bits(尾数位)
int32 的实际数字位决定了int32的范围;
float的指数位决定了float的范围,因为有指数位,所以范围会比int类型大很多很多。float的尾数位决定了float的精度。
4bit 对应 十进制的 1位精度,所以按道理来说 float 23位尾数位 只能表示5 精度,但实际有6位精度,原因如下
例子:
8.25 在机器中存储形式过程:
转换为2进制为:1000.01
转换为科学计数法为:1.00001*2^3
所以:因为8.25为正 ,符号位为0,因为指数部分元数据为127,即首位为1,所以:
符号位:0
指数位:1000 0010
尾数位:0000 1000 0000 0000