在数学中 2 无穷大不相等,也不大于或小于那时。那么给了什么?
在 irb 中,Float::INFINITY == Float::INFINITY(在 ruby 1.9.3 中测试)
用更专业的术语来说,这一切都归结为浮点运算的 IEEE 754 标准。
IEEE 754 标准确实隐含地将 Infinity == Infinity 定义为 true。标准的相关部分是第 5.7 节:“[在两个 IEEE 754 值之间] 可能存在四种互斥关系:小于、等于、大于和无序。最后一种情况出现在至少一个操作数为 NaN 时。”
在任何一对浮点值之间,这四种关系中的一种是正确的。因此,由于 Infinity 不是 NaN,因此 Infinity 就自身而言不是无序的。让 (Infinity < Infinity) 和 (Infinity > Infinity) 之一为真不会是一致的,因此 (Infinity == Infinity)。
大多数现代计算机使用 IEEE 浮点数来表示实数。这些提供了对实数的近似值,而不是真实的东西。特别是有两个值代表所有无限值,+infinity 和 -infinity。就像你不能用二进制完全准确地表示 0.1 或 1/3 一样,无穷大是近似值。
因此,所有+无穷大彼此相等,所有-无穷大彼此相等。