Blog
204 字
1 分钟
Long 和 Float 谁更大?
  • 64位整形的最大值(Long.MAX_VALUE) 和 32位浮点型的最大值(Float.MAX_VALUE)谁更大?
  • System.out.println("Max long < Max float ? " + (Long.MAX_VALUE < Float.MAX_VALUE));
    
  • 要回答这个问题先得看看他们在计算机中的存储方式(一般情况):
  • 整形在计算机中存储方式相对简单,以 64 位整形(long)为例:
  • | 1位符号位 | 63位数值 |
  • 而浮点型稍微复杂点,它的存储方式谁这样的,32 位为例
  • | 1位符号位 | 8位指数(包含正负) | 23位尾数 |
  • 比如 100.01 = 1 * 1.0001 * 2^2
  • 从上面可以看出,long 的范围:-2^63 ~ 2^63
  • 而 float 的范围:-2^(2^7) ~ 2^(2^7) = -2^127 ~ 2^128,其中有几个保留数字
  • 虽然 64 位整数没有 32 位浮点数的取值范围大,但是它的精度更高。