有意返回 NaN

Intentionally return NaN

本文关键字:NaN 返回      更新时间:2023-10-16

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

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

这应该有效:

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

这是一个老问题,但是使用 C++11,您拥有nan(const char*)函数族(双打nan,长双打nanl和浮点数nanf)。该参数是特定于实现的,但传递一个空字符串(例如 nan("") ) 返回一个通用的 NaN 值。

math.h 中的NAN宏也有效。