问题标签 [nan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
13479 浏览

perl - 如何在 Perl 中创建或测试 NaN 或无穷大?

如何在 Perl 中创建或测试 NaN 或无限值?

0 投票
7 回答
208278 浏览

java - 你如何测试一个双精度值是否等于 NaN?

我在 Java 中有一个 double,我想检查它是否是NaN. 做这个的最好方式是什么?

0 投票
1 回答
1809 浏览

nan - 如何在 Borland C++ 中使用 NaN 初始化数字?

如何在 Borland C++ 中使用 NaN 初始化数字?

重复:在 C++ 中使用 NaN?

0 投票
11 回答
61579 浏览

floating-point - 对于 IEEE754 NaN 值返回 false 的所有比较的基本原理是什么?

为什么 NaN 值的比较与所有其他值的行为不同?也就是说,与运算符 ==、<=、>=、<、>(其中一个或两个值为 NaN)的所有比较都返回 false,这与所有其他值的行为相反。

我想这在某种程度上简化了数值计算,但我找不到明确说明的原因,甚至在Kahan的关于 IEEE 754 状态的讲义中也没有,它详细讨论了其他设计决策。

在进行简单的数据处理时,这种异常行为会造成麻烦。例如,在 C 程序中对某个实值字段的记录列表进行排序时,我需要编写额外的代码来处理 NaN 作为最大元素,否则排序算法可能会变得混乱。

编辑: 到目前为止的答案都认为比较 NaN 是没有意义的。

我同意,但这并不意味着正确答案是错误的,而是不是布尔值 (NaB),幸运的是它不存在。

因此,在我看来,比较返回真或假的选择是任意的,对于一般数据处理,如果它遵守通常的规律(== 的自反性,<,==,> 的三分法),以免数据结构依靠这些法律变得混乱。

所以我要求打破这些法律的一些具体优势,而不仅仅是哲学推理。

编辑 2: 我想我现在明白为什么将 NaN 设为最大值是一个坏主意,它会弄乱上限的计算。

NaN != NaN 可能是可取的,以避免检测循环中的收敛,例如

但是,最好通过将绝对差异与小限制进行比较来编写。所以恕我直言,这是在 NaN 打破反身性的一个相对较弱的论据。

0 投票
3 回答
58712 浏览

matlab - 查找 Array 中的所有 NaN 元素

MATLAB 中是否有一个命令可以让我找到数组中的所有NaN(非数字)元素?

0 投票
3 回答
7081 浏览

jqgrid - 当 jqGrid 单元格中的 NaN 时为空白

如何在 jqGrid 单元格中设置空白而不是 NaN?使用格式化程序?有例子吗?

0 投票
3 回答
2064 浏览

.net - 为什么 Assert.AreEqual(1.0, double.NaN, 1.0) 通过?

简短的问题,为什么会Assert.AreEqual(1.0, double.NaN, 1.0)通过?而Assert.AreEqual(1.0, double.NaN)失败。

它是 MSTest (Microsoft.VisualStudio.QualityTools.UnitTestFramework) 中的错误还是我在这里遗漏了什么?

最好的问候,埃吉尔。


更新:可能应该补充一点,我的问题背后的原因是,由于某些线性代数矩阵运算的结果是 NaN 或 (+/-)Infinity,我有一堆单元测试不幸通过了。单元测试很好,但是由于当实际或/和预期为 NaN 或 Infinity 时,带有增量的双精度数上的 Assert.AreEqual 将通过,所以我不得不相信我正在测试的代码是正确的。

0 投票
3 回答
1366 浏览

java - Java中的NaN问题

我将四个字节转换为浮点数,NaN结果得到了,但我想要 value 0.0。我究竟做错了什么?

这是我的代码:

0 投票
3 回答
1699 浏览

c++ - 打破 NaN 或 infs

通常很难找到 NaN 的起源,因为它可能发生在计算的任何步骤并自行传播。那么当计算返回 NaN 或 inf 时,是否可以让 C++ 程序停止?我认为最好的方法是崩溃并显示一个很好的错误消息:

这样的事情可能吗?你有更好的解决方案吗?你如何调试 NaN 问题?

编辑:精度:我在 Linux 下使用 GCC。

0 投票
1 回答
1053 浏览

java - Java MDSJ 产生 NaN

有人对MDSJ有任何经验吗?以下输入仅产生 NaN 结果,我不知道为什么。文档非常稀疏。

这是输出:

也许我错误地使用了 MDS。每个长度为 13 ininput的子数组旨在表示一个对象,但 MDSJ 返回 13 个点。

此输入也失败:

编辑:看来我用错了。我一直在给它这样的输入:

但它真正想要的是这样的距离矩阵:

但是,不完全是,因为对于此输入:

我得到这个结果:

但是,如果它确实需要一系列距离,那么首先使用 MDS 有什么意义呢?我认为它应该将一组属性归结为坐标。