所以我最近开始喜欢kotlin的语言.今天,在比较双打时,我遇到了不可避免的NaN
分.
fun main(args: Array<String>) {
val nan = Double.NaN
println("1: " + (nan == nan))
println("2: " + (nan == (nan as Number)))
println("3: " + ((nan as Number) == nan))
}
N.B: (Double
is a subtype of Number
)
运行上述代码会产生:
1: false
2: true
3: true
I understand that comparing with NaN
in Java returns false
, so I would expect false
for all expressions.
How can this behavior be explained? What is the rationale behind it?