【发布时间】:2013-10-05 08:48:52
【问题描述】:
我正在努力深入了解 Java 的原始数据类型。我已经有了一个很好的概述,并且我了解有符号整数值是如何在 Java 中存储的,以及如何判断/计算字节、短、整数或长数据类型的范围。
所以,当查看 Java 数据类型 int 时,我知道它是一个 32 位有符号值,因此我可以准确地知道一个 int 类型可以存储多少种不同的“状态”以及该数据类型的范围是什么(即 2^32 种不同的状态,导致范围从 -2^31 到 +(2^31)-1 或大致 -2e+9 到 +2e+9)。
但是,在查看数据类型 float 时,我需要一些帮助。我知道 Java 的 float 数据类型是 32 位类型(就像 int 一样),因此我假设它也可以存储总共 2^32 种不同的状态。但是,当我查看此表中给出的数字 (http://www.javacamp.org/javaI/primitiveTypes.html) 时,我不明白这种数据类型如何存储大约 -3e+38 到 3e+38 范围内的浮点数(这已经是范围比 int 可以覆盖的范围更广)加上介于两者之间的所有单精度浮点小数 - 只有 32 位。
谁能解释一下浮点数是如何存储的以及为什么它“看起来”可以在相同的位数内存储比 int 更多的信息(这对我来说几乎是不可能的)?也许你可以给我指出一个很好的阅读或告诉我我在哪里犯了一个逻辑错误。
【问题讨论】:
-
你读过Floating point吗?
-
你听说过尾数、小数点吗?
-
@SachinVerma:现在我有了。感谢您向我指出这些关键字!
标签: java floating-point int type-conversion primitive-types