我想测试Java中的无穷大是否等于无穷大:
Double.POSITIVE_INFINITY == Double.POSITIVE_INFINITY
当结果证明是真的时,我对结果感到惊讶。我的问题是两个无限值如何相等?
答案 0 :(得分:6)
因为Double.POSITIVE_INFINITY
代表一个特定的数字,所以使用==
将其与自身进行比较应该返回true。
此行为在JLS Sec 15.21.1中明确指定:
根据IEEE 754标准的规则执行浮点相等测试:
...
否则,相等运算符会认为两个不同的浮点值不相等。
特别是,有一个值代表正无穷大,一个值代表负无穷大;每个比较仅与自身相等,每个比较不等于所有其他值。