【问题标题】:Intentionally return NaN故意返回 NaN
【发布时间】:2012-11-25 10:25:28
【问题描述】:

我正在编写光线追踪器,其中一部分过程正在发射可能会或可能不会击中对象(几何对象)的光线。如果没有发生交集(交集是虚构的),许多描述对象的方程自然返回 NaN,但如果没有发生交集,则并非所有对象都返回 NaN。

我知道如果没有发生交集,我可以强制返回 sqrt(-1),但我想知道是否有办法以更便宜的方式返回它。

【问题讨论】:

    标签: c++ nan


    【解决方案1】:

    math.h 中的 NAN 宏也有效。

    【讨论】:

    • 应该在 C++ 中使用 <cmath> 而不是 <math.h>
    【解决方案2】:

    我知道这是一个老问题,但在 C++11 中,你有 nan(const char*) 系列函数(nan 用于双精度,nanl 用于长双精度,nanf 用于浮点数)。该参数是特定于实现的,但传递一个空字符串(例如nan(""))会返回一个通用的 NaN 值。

    【讨论】:

    【解决方案3】:

    这应该可行:

    #include <limits>
    
    return std::numeric_limits<double>::quiet_NaN();
    

    【讨论】:

    • 我想我花了一分钟来查找正确的标题。 :) 我暂时先离开这个,我认为它比接受的答案略好。
    【解决方案4】:
    return std::numeric_limits<double>::quiet_NaN();
    

    【讨论】:

      猜你喜欢
      • 2021-01-11
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 2019-05-04
      • 2022-12-22
      • 2017-08-12
      • 1970-01-01
      • 2018-05-31
      相关资源
      最近更新 更多