2

如果从 -2^31 到 2^31 需要所有 32 位来存储,它如何存储 + 和 - 无限?它会使用更多内存吗?存储这些值是否良好且安全?

更新:感谢答案,我知道只有浮点数据类型可以存储 Inf 值,整数不能。

4

2 回答 2

8

Java 以及大多数其他编程语言都遵循IEEE 754浮点数规范。可能值的范围略有减少,以允许无穷大以及NaN(Not a Number)。这些可以安全存放;它们甚至可以作为常量使用,例如Double.POSITIVE_INFINITY.

如果从 -2^31 存储到 2^31 需要全部 32 个字节

我认为您的意思是 32 bits,用于存储此范围内所有可能的整数值。Java 的 Integer 类型如您所描述的那样工作,并且无法存储无穷大或其他特殊值。

于 2011-07-31T07:55:56.323 回答
6

如果需要所有 32字节位来存储从 -2^31 到 2^31...

你在说Integers

...它如何存储 + 和 - 无限?

你在说FloatDouble,它们是不同的数据类型。Float是一个 32 位的 IEEE 754 号码,并且Double是一个 64 位的 IEEE 754 号码。IEEE 754浮点数具有为正无穷和负无穷预留的特殊值。

Java 的类中没有特殊的“无穷大”值Integer,您可以存储全范围的值。

于 2011-07-31T07:57:19.083 回答