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
posted @ 2026-01-23 20:26  Nickey103  阅读(2)  评论(0)    收藏  举报