我试图很好地理解 Java 的原始数据类型。我已经有了一个很好的概述,并且我了解有符号整数值是如何存储在 Java 中的,以及如何判断/计算字节、短、整数或长数据类型的范围。
因此,当查看 Java 数据类型 int 时,我知道它是一个 32 位有符号值,因此我可以准确地知道一个 int 类型可以存储多少不同的“状态”以及该数据类型的范围是什么(即 2^ 32 种不同的状态,范围从 -2^31 到 +(2^31)-1 或大致 -2e+9 到 +2e+9)。
但是,在查看数据类型 float 时,我需要一些帮助。我了解 Java 的浮点数据类型是 32 位类型(就像 int 一样),因此我假设它也可以存储总共 2^32 种不同的状态。但是,当我查看此表(http://www.javacamp.org/javaI/primitiveTypes.html)中给出的数字时,我不明白这种数据类型如何存储大约 -3e 范围内的浮点数+38 到 3e+38(这已经比 int 可以覆盖的范围大得多)加上介于两者之间的所有单精度浮点小数 - 只有 32 位。
谁能解释一下浮点数是如何存储的以及为什么它“看起来”可以在相同的位数内存储比 int 更多的信息(这对我来说几乎是不可能的)?也许你可以给我指出一个很好的阅读或告诉我我在哪里犯了一个逻辑错误。