Java如何在内存中存储+ -Infinite?

时间:2011-07-31 07:52:37

标签: java math memory infinite

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

更新:感谢答案,我知道只有浮点数据类型才能存储Inf值,而Integers则不能。

2 个答案:

答案 0 :(得分:8)

Java以及大多数其他编程语言遵循浮点数IEEE 754规范。可能值的范围略微减小,以允许the infinities as well as NaN (Not a Number)。这些都是安全的存储;它们甚至可用作常量,例如Double.POSITIVE_INFINITY

  

如果从-2 ^ 31到2 ^ 31

存储所有32字节

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

答案 1 :(得分:6)

  

如果需要将所有32个字节位存储在-2 ^ 31到2 ^ 31 ...

你在谈论Integers

  

......怎么能存储+和 - 无限?

您在谈论FloatDouble,它们是不同的数据类型。 Float是32位IEEE 754号码,Double是64位IEEE 754号码。 IEEE 754浮点数具有为正无穷大而设置的特殊值。

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