如何在 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章