为什么NaN === NaN
返回false
Javascript?
> undefined === undefined
true
> NaN === NaN
false
> a = NaN
NaN
> a === a
false
在文档页面上,我看到以下内容:
## 针对NaN的测试
相等运算符(==
和===
)不能用于测试的值NaN
。使用isNaN
代替。
有没有参考资料可以回答这个问题?不客气。
严格的回答 :因为JS规范是这样说的:
有用的答案 :浮点数的IEEE 754规范(所有语言都将其用于浮点)指出NaN绝不相等。
我很熟悉在JavaScript中是“怪异的”,即总是返回,如本文所述。因此,不应进行比较来检查,而应使用isNaN(..)取而代之的是。 所以我惊讶地发现 这似乎不一致。为什么会有这种行为? 它是怎么工作的?方法是否专门检查?
众所周知,NaN在算术中传播,但我找不到任何演示,所以我写了一个小测试: 这个例子(在这里实时运行)基本上产生了我所期望的(消极有点奇怪,但它有点道理): 2015年MSVC奥运会产生了类似的东西。然而,英特尔C 15生产: 具体来说,。 这...不可能是对的,对吧?相关标准(ISO C,ISO C,IEEE 754)对此有什么说法,为什么编译器之间的行为会有差异?
问题内容: 如果我使用这样的1或NaN命名: 我想计算该系列的总和,但应在NaN的位置将其重置(设置为零),如下所示: 理想情况下,我希望有一个矢量化解决方案! 我曾经在Matlab上看到过类似的问题: 在NaN上重置Matlabcumsum吗? 但我不知道如何翻译这行 问题答案: Matlab代码的简单Numpy翻译是这样的: 执行此代码将返回结果。此解决方案仅会与原始解决方案一样有效,但是如果
问题内容: 只是出于好奇。 数字似乎不太合逻辑。顺便说一句,就像或返回假。这是javascript的特性之一,还是有原因呢? 编辑:谢谢你的回答。但是,要让所有人适应现实并非易事。阅读答案和Wiki我了解得更多,但仍然有类似 与NaN的比较始终会返回无序结果,即使与自身进行比较也是如此。比较谓词是信令或非信令,信令版本表示此类比较的无效异常。相等和不相等谓词是无信号的,因此x = x返回false
我的问题很简单,我知道我遗漏了一些非常明显的东西,我就是不知道它是什么。。。。 我对霍尔特·温特斯的测试预测结果是南,我不知道为什么。有人能帮忙吗? 我正在使用Jupyter笔记本电脑,并试图使用霍尔特-温特斯方法预测一个SKU的销售额。我甚至用了 以下是我使用的代码: 有人能指出我可能遗漏了什么吗?这似乎是一个简单的问题和一个简单的解决方案,但它踢我的屁股。 谢谢
问题内容: 在我们尝试投射包含以下内容的序列的序列时,如下所示 ,我经常看到错误消息 我知道值不能转换为整数。但是我对这种情况下的抛出感到好奇。它说 float NaN不能转换为整数。 为什么将值视为浮点对象有任何特定的原因?还是这种情况与显示的错误消息有关? 问题答案: 简短的答案是IEEE 754指定为一个值。 至于您应该如何将转换为特定的数值数据类型,我更喜欢在可能的地方使用。以下示例说明了