【发布时间】:2011-10-16 19:44:08
【问题描述】:
如果从 -2^31 到 2^31 需要所有 32 位来存储,它如何存储 + 和 - 无限?它会使用更多内存吗?存储这些值是否安全且安全?
更新:感谢答案,我知道只有浮点数据类型可以存储 Inf 值,整数不能。
【问题讨论】:
-
@Ignacio Vazquez-Abrams:整数呢?这是我主要需要知道的。
-
整数不能存储无穷大。
如果从 -2^31 到 2^31 需要所有 32 位来存储,它如何存储 + 和 - 无限?它会使用更多内存吗?存储这些值是否安全且安全?
更新:感谢答案,我知道只有浮点数据类型可以存储 Inf 值,整数不能。
【问题讨论】:
Java 以及大多数其他编程语言都遵循IEEE 754浮点数规范。可能值的范围略微缩小以允许the infinities as well as NaN (Not a Number)。这些可以安全存放;它们甚至可以作为常量使用,例如 Double.POSITIVE_INFINITY。
如果从 -2^31 到 2^31 需要全部 32 个字节来存储
我认为您的意思是 32 个位,用于存储此范围内所有可能的整数值。 Java 的 Integer 类型如您所描述的那样工作,并且无法存储无穷大或其他特殊值。
【讨论】:
【讨论】:
Integer 中没有无穷大。如果你想要它,你必须在你的应用程序中留出一个值来视为无穷大,这可能很棘手,或者定义你自己的类来聚合一个 Integer 以及一个表明它持有“无穷大”的标志。