【发布时间】:2018-07-08 03:11:33
【问题描述】:
我已阅读有关在 Fortran 比较中使用 NaN 的信息性文章(here 和 here) 我想我已经大致了解了正在发生的事情。
我的问题更多的是关于一般 NaN 的使用。
假设我有一组实数,但我不知道它们的值是什么。因此,我将它们全部设置为 NaN,并且实际上,我使用 NaN 来部分表示“未分配”。关于这是否是个好主意,似乎有一些debate,我已经阅读了使用巨大(1.0)或其他“幻数”的建议。
但使用 NaN 似乎有真正的好处,因为任何涉及 any 值 NaN 变量的计算都将导致 NaN。这很有帮助(并且在数学意义上可能是“正确的”)。
例如,如果 x 设置为 NaN,并且 y 为 1.23,则
z = x + y
z = x - y
z = x * y
z = x / y
总是会导致 z 为 NaN(至少它与 Windows 上的 Intel v18 一样)——这就是我想要的:z 是未知的,因为 x 是未知的。
那么 - 这是可接受的 NaN 用法吗?还是我制造了我还没有意识到的问题?
【问题讨论】:
-
当然,将变量标记为未分配的(也许是)另一种方法是不分配它。