首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么==中的Float::INFINITY是Float::INFINITY?

为什么==中的Float::INFINITY是Float::INFINITY?
EN

Stack Overflow用户
提问于 2013-01-10 09:59:06
回答 2查看 1.9K关注 0票数 6

在数学中,2个无穷大不相等,也不大于或小于2。那是怎么回事呢?

在irb中,Float::INFINITY == Float::INFINITY (在Ruby1.9.3中测试)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

票数 8
EN

Stack Overflow用户

发布于 2013-01-10 10:10:30

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

因此,所有的+无穷大彼此相等,并且所有的-inifinities彼此相等。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14249697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档