就像它在问题中所说的那样,我尝试过value == NaN并且它是错误的,然后记住我应该使用它isNaN(value)来进行检查。
为什么会有所不同?
我期待Double.NaN - Double.NaN等于0,但事实并非如此.
有人可以解释发生了什么吗?在NaN上做数学时有哪些经验法则?它是否像"如果任何sub-expr是NaN,那么整个expr是NaN"?
谢谢,
在这里,我有以下几点:
>>> import numpy as np
>>> q = np.nan
>>> q == np.nan
False
>>> q is np.nan
True
>>> q in (np.nan, )
True
Run Code Online (Sandbox Code Playgroud)
所以,问题是:为什么nan不等于nan,而是nan?(UNIQUE) 为什么 'in' 返回 True?我似乎无法追踪 nan 的实现。它引导我到 C:\Python33\lib\site-packages\numpy\core\umath.pyd(行 NAN = nan),但是从那里没有可追踪的方法来找出 nan 实际上是什么。
我正在研究一个jQuery插件,我需要确保这个值是一个数字,或者只是一个数字的字符串.所以为了做到这一点,我做了以下代码,其中val一个变量可能是也可能不是数字.
if (typeof val !== 'number') {//if "val" isn't a number
if (typeof val === 'string' && parseInt(val) !== NaN) {//see if "val" is a string with only a number
val = parseInt(val);
}
}
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,同时测试,即使val是与文本字符串,它仍然会返回parseInt(val) !== NaN作为true.我后来使用Chrome控制台进行了测试,这就是我得到的:
如你所见,'asf'是Not-a-Number.但无论它返回什么地方true,它都应该返回false,无论它返回什么地方false,它都应该返回true.您还可以看到我测试过以确保NaN其实际上不是字符串.
上面你可以看到返回值是相同的,但这次它是正确的.
我错过了什么吗?或者我应该采用不同的方式做到这一点?