如何在 C++ 中避免 NaN [重复]

Posted

技术标签:

【中文标题】如何在 C++ 中避免 NaN [重复]【英文标题】:How to avoid NaN in C++ [duplicate] 【发布时间】:2018-09-30 20:51:00 【问题描述】:

当然,我知道我应该编写更好的代码,而不是创建 NaN 值。 但是有什么随意的方法可以避免它。我的意思是:

if (!(floatNumber == NaN))
   // do some stupid function
else
return;

但这对我不起作用。我也试过floatNumber==null,但也没有结果。 你能帮帮我吗?

【问题讨论】:

好的,感谢您提供信息,但您能否提供指向该重复线程的任何链接,以便我阅读并找到答案? 【参考方案1】:

要测试一个数是否为NaN,可以使用标准库函数std::isnan

【讨论】:

谢谢,但是如何使用呢?类似的东西? if(floatNumber == std::isnan) 或其他方式? @pajczur 你用浮点数调用它来检查它是否是 NaN。换句话说,你应该写if (!std::isnan(floatNumber))而不是if (!(floatNumber == NaN)) 然后让后面的人应用浮点优化选项,你有一个错误。也就是说,这个答案是编写易碎代码的建议。 @Cheersandhth.-Alf 从什么时候开始有文档化的标准库函数“脆弱代码”? @user4815162342:如果你指的是std::isnan,那是从 C++11 开始的。但这不是标准的错。是实施未能正确做到这一点,这就是您需要关注的现实。

以上是关于如何在 C++ 中避免 NaN [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中替换NaN值[重复]

C++ 待办事项列表重复输入。如何避免这种情况?

如何检测指定数量是不是为 NaN 以及如何[重复]

如何在熊猫数据框列中获取 NaN 观察的频率 [重复]

C中的NaN文字?

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