ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Java中为何float类型比long类型取值范围大?

Java中为何float类型比long类型取值范围大?

float占4字节,long占8字节,第一反应是long的取值范围更大。
image
image

不然,因为二者存储数的方式不同,float采用科学计数法存储,long直接用二进制形式存储数。

long占8字节,64位中最高一位是符号位,表示的最大数是2^63 - 1。
float占4字节,32位分为3个字段:

  • 符号位 (Sign, 1位):最高位,表示正负。
  • 指数位 (Exponent, 8位):用来存储 2 的多少次方,决定了数的范围。
  • 尾数位 (Mantissa, 23位):用来存储具体的有效数值,决定了数的精度。
    float类型的最大值计算需查询 IEEE 754 标准。
    image
返回列表