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

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

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

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

【问题讨论】:

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

标签: c++ floating-point nan


【解决方案1】:

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

【讨论】:

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