6

在数学中 2 无穷大不相等,也不大于或小于那时。那么给了什么?

在 irb 中,Float::INFINITY == Float::INFINITY(在 ruby​​ 1.9.3 中测试)

4

3 回答 3

8

用更专业的术语来说,这一切都归结为浮点运算的 IEEE 754 标准。

IEEE 754 标准确实隐含地将 Infinity == Infinity 定义为 true。标准的相关部分是第 5.7 节:“[在两个 IEEE 754 值之间] 可能存在四种互斥关系:小于、等于、大于和无序。最后一种情况出现在至少一个操作数为 NaN 时。”

在任何一对浮点值之间,这四种关系中的一种是正确的。因此,由于 Infinity 不是 NaN,因此 Infinity 就自身而言不是无序的。让 (Infinity < Infinity) 和 (Infinity > Infinity) 之一为真不会是一致的,因此 (Infinity == Infinity)。

这取自http://compilers.iecc.com/comparch/article/98-07-134

于 2013-01-10T02:08:54.580 回答
6

虽然在大多数集合论中存在多种不同的无穷大,但实数表示的无穷大通常表示扩展实数线的无穷大,其中 +∞ 和 -∞ 是专门选择大于和小于所有实数的值。在此设置中,∞ = ∞ 和 -∞ = -∞。

不相等的集合理论无穷大是基数序数,通常不会用浮点值表示。它们分别测量集合中的大小和位置,因此最好作为另一种类型的概括,例如整数类型。如果您想存储这些类型的值,您可能会有一个自定义类型来表示无限序数或无限基数。

此外,集合论的无穷大绝对有可能彼此相等。ℵ 0 = ℵ 0,例如(尽管 ℵ 0 ≠ ℵ 1)。

希望这可以帮助!

于 2013-01-10T02:03:53.073 回答
2

大多数现代计算机使用 IEEE 浮点数来表示实数。这些提供了对实数的近似值,而不是真实的东西。特别是有两个值代表所有无限值,+infinity 和 -infinity。就像你不能用二进制完全准确地表示 0.1 或 1/3 一样,无穷大是近似值。

因此,所有+无穷大彼此相等,所有-无穷大彼此相等。

于 2013-01-10T02:10:29.577 回答