在数学中,2个无穷大不相等,也不大于或小于2。那是怎么回事呢?
在irb中,Float::INFINITY == Float::INFINITY (在Ruby1.9.3中测试)
发布于 2013-01-10 10:08:55
用更专业的术语来说,这一切都归结于IEEE754浮点算术标准。
无限无限IEEE754标准确实隐含地将无限==无限定义为真。该标准的相关部分是第5.7节:“两个IEEE754值之间可能存在四种互斥关系:小于、等于、大于和无序。最后一种情况发生在至少一个操作数为NaN时。”
在任何一对浮点值之间,这四个关系中恰好有一个是真的。因此,由于无限不是无序的( NaN ),所以无限相对于自身也不是无序的。(Infinity < Infinity)和(Infinity > Infinity)之一为真不会是一致的,所以(Infinity == Infinity)。
这张图片取自http://compilers.iecc.com/comparch/article/98-07-134
发布于 2013-01-10 10:10:30
大多数现代计算机使用IEEE浮点来表示实数。它们提供了与实数的近似值,而不是真实的数字。特别是,有两个值表示所有的无限值:+infinity和-infinity。就像你不能用二进制完全准确地表示.1或1/3一样,无穷大是近似值。
因此,所有的+无穷大彼此相等,并且所有的-inifinities彼此相等。
https://stackoverflow.com/questions/14249697
复制相似问题