我期待Double.NaN - Double.NaN
等于0,但它不是。
有人可以解释发生了什么吗? 在NaN上做数学时有哪些经验法则? 它是否类似“如果任何sub-expr是NaN,则整个expr是NaN”?
感谢,
答案 0 :(得分:6)
NaN
代表非数字,这就是NaN - NaN = NaN
的原因。想象一下这样的事情:
"foo" - "bar" = ??? <-- What should be the output?
或者
"foo" - (new Object()) = ??? <-- none of them are numbers
关于此的更多数学例子:
0 / 0 = NaN <-- Mathematically we don't know the exact result
所以,有这样的事情:
0 / 0 - 0 / 0 = NaN
更多信息: