方法一:通过STL产生无效的 double / float 值:
std::numeric_limits<double> dbl;
double a = dbl.signaling_NaN();
double b = dbl.quiet_NaN();
std::numeric_limits<double> flt;
double c = flt.signaling_NaN();
double d = flt.quiet_NaN();
const static float flt_NaN = std::numeric_limits <float>::quiet_NaN();
const static double dbl_NaN = std::numeric_limits <double>::quiet_NaN();
方法二:Native C++ 无效 double 的生成方法
double Double_NaN() {
// code representing a NaN
unsigned long nan[2] = {0xffffffff, 0x7fffffff};
return *(double*)nan;
}