提问人:asimes 提问时间:12/7/2012 更新时间:8/18/2020 访问量:19086
故意返回 NaN
Intentionally return NaN
问:
我正在编写一个光线追踪器,该过程的一部分是发射可能会也可能不会击中物体(几何物体)的光线。如果没有发生交集(交集是虚构的),许多描述对象的方程会自然返回 NaN,但如果没有发生交集,并非所有对象都会返回 NaN。
我知道如果没有发生交叉点,我可以强制返回 sqrt(-1),但我想知道是否有办法以更便宜的方式返回它。
答:
18赞
Henrik
12/7/2012
#1
return std::numeric_limits<double>::quiet_NaN();
32赞
unwind
12/7/2012
#2
这应该有效:
#include <limits>
return std::numeric_limits<double>::quiet_NaN();
评论
1赞
unwind
1/31/2017
我想我花了一分钟才找到正确的标题。:)我暂时不说这个,我认为它比公认的答案要好一点。
8赞
The_Rafi
8/14/2015
#3
我知道这是一个老问题,但是使用 C++11,您拥有一系列函数(用于双精度、长双精度和浮点数)。该参数是特定于实现的,但传递空字符串(例如 )将返回泛型 NaN 值。nan(const char*)
nan
nanl
nanf
nan("")
评论
2赞
smartycope
8/18/2020
#4
中的宏也有效。NAN
math.h
评论
3赞
HolyBlackCat
8/18/2020
可能应该使用而不是在 C++ 中。<cmath>
<math.h>
上一个:光线追踪器的材质属性列表
下一个:正则表达式“匹配”与“捕获”
评论