float浮点数为什么会有误差 浮点数由两部分组成?
浮点数由两部分组成?
浮点数由两部分组成:基m和指数E。
基部分使用二进制数表示浮点数的实际值。
索引部分占用8位二进制数,可以表示0-255的范围。然而,指数可以是正的,也可以是负的,因此IEEE规定这里计算的幂必须减去127才是真正的指数。因此,float的指数可以是-126到128。实际上,它占用了24位的值。因为它的最高位总是1,所以最高位不存储,只存储23位。到目前为止,23位的基部加上8位的索引部分已经使用了31位。如前所述,float占用4个字节,即32位。那么另一位是干什么的?还有一个位,实际上是4字节中的最高位,用来表示浮点数的正负。最高位为1时为负数,最高位为0时为正数。
根据最广泛使用的IEEE754标准,浮点数据类型的长度是32位,其中最高的位是符号位,中间的8位是索引位,最后的23位是尾数。因此,浮动范围(-3.4e38)~(3.4e38)很大,基本上可以满足我们的需要。然而,一个问题是精度。23位尾数的最大范围是2^23−1=8388607,所以浮点数的小数精度只有6-7位,所以使用浮点数时要注意其精度。
类似地,double的尾数从23位扩展到52位,顺序码从8位增加到11位。其示值范围为-1.7e 308~1.7e 308,精度为2^52-1=4503599627370495,为16位,最小精度为15位。
float浮点数为什么会有误差 float数据类型举例 python双精度浮点数
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。