在数学中,2个无穷大不相等,也不大于或小于.什么给出了什么?
在irb中,Float :: INFINITY == Float :: INFINITY(在ruby 1.9.3中测试)
从技术角度来说,这一切都归结为浮点算术的IEEE 754标准.
IEEE 754标准确实隐含地将Infinity == Infinity定义为真.该标准的相关部分是第5.7节:"两个IEEE 754值之间可能有四个相互排斥的关系:小于,等于,大于和无序.最后一种情况出现在至少有一个操作数为NaN时."
在任何一对浮点值之间,恰好这四个关系中的一个是真的.因此,由于Infinity不是NaN,Infinity本身并不是无序的.使(Infinity <Infinity)和(Infinity> Infinity)中的一个为真是不一致的,因此(Infinity == Infinity).
这取自http://compilers.iecc.com/comparch/article/98-07-134
| 归档时间: |
|
| 查看次数: |
1514 次 |
| 最近记录: |