检查NaN数[重复]

Posted

技术标签:

【中文标题】检查NaN数[重复]【英文标题】:check NaN number [duplicate] 【发布时间】:2011-03-27 02:39:01 【问题描述】:

是否可以检查号码是否为NaN

【问题讨论】:

NIL(C-ese 中为 NULL)是一个特殊的 pointer 值。数字没有 NULL 之类的东西。您是否正在考虑浮点 NaN? 我的意思是 NaN,我的错,修复了 Q。 这能回答你的问题吗? Checking if a double (or float) is NaN in C++ 【参考方案1】:

您正在寻找null,但这仅对指针有用。数字本身不能为空,它要么具有您放入其中的已知值,要么具有之前内存中的随机数据。

【讨论】:

【参考方案2】:

是的,因为NaN 不等于任何其他数字,包括它自己。

当您考虑 NaN 的含义时,这是有道理的,即您创建了一个实际上无法用“正常”浮点值表示的值。

因此,如果您创建两个不知道它们是什么的数字,则很难认为它们相等。它们可能是,但是,考虑到它可能是相当大的数字可能性(实际上是无限的),两个相同数字的可能性微乎其微:-)

您可以查找一个函数(实际上是宏),例如 isnan(在 C 的 math.h 和 C++ 的 cmath 中),或者只使用 NaN 值不等于自身的属性。喜欢:

if (myFloat != myFloat)  ... 

如果由于某种奇怪的原因,您的 C 实现没有 isnan(它应该,因为标准要求它),您可以编写自己的代码,例如:

int isnan_float (float f)  return (f != f); 

【讨论】:

并将myFloat != myFloat 包装成某种带有注释的isnan 函数,以免将来不了解它的读者非常困惑。【参考方案3】:

Linux/gcc下有isnan(double),符合BSD4.3。

C99 提供 fpclassify(x)isnan(x)。 (但 C++ 标准/编译器不一定包含 C99 功能。)

std::numeric_limit 应该有某种方法...正在检查...

哦。我应该知道...这个问题之前已经回答过... Checking if a double (or float) is NaN in C++ Using NaN in C++? http://bytes.com/topic/c/answers/588254-how-check-double-inf-nan

【讨论】:

以上是关于检查NaN数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python中的NaN和有效性检查[重复]

检查用户输入是不是为 NaN [重复]

在打字稿中检查 NAN [重复]

python如何检查数据框中的值是不是为nan [重复]

检查 NaN 并在 If [重复] 中使用它

如何检查NaN javascript的相等性[重复]