【发布时间】:2014-11-16 23:58:03
【问题描述】:
我希望 Double.NaN - Double.NaN 等于 0,但事实并非如此。
有人可以解释发生了什么吗? 在 NaN 上进行数学运算时有哪些经验法则? 是不是类似于“如果任何子表达式是 NaN,那么整个 expr 都是 NaN”?
谢谢,
【问题讨论】:
-
NaN 从字面上看是不是一个数字。你不能对它做算术。
-
即使 NaN==NaN 返回 false (因此有特殊的方法来测试 NaN。基本上 NaN 是“我不知道”。什么是“我不知道”减去“我不知道”。它可能是 6 , 5, 无穷大。所以它仍然是“我不知道”
-
并不是说像 infinity-inifinity 这样的东西仍然是未定义的......更不用说前面解释过的“我不知道”;)
-
我已将其标记为重复;问题相同,但在概念上是相同的(x == x 与 x - x == 0 相同),并且无论如何都包含在已接受的答案中。