什么样的C++常量/宏是-1.#IND?

use*_*943 1 c++ math function pow

数学"pow"函数返回-1.#IND.什么样的错误值是-1.#IND以及如何在if语句中检测错误?

Xeo*_*Xeo 8

-1.#IND是Windows 上NaN的文本表示.

您可以使用以下小函数检查浮点值是否为NaN:

// NaN never compares equal, not even to itself
bool is_nan(double d){ return d != d; }
Run Code Online (Sandbox Code Playgroud)

(正如@chris所说,如果你有一个符合C++ 11标准的stdlib,你会std::isnan进入<cmath>.)

在正常的程序流程中,只要您理智地检查数学输入,就不必担心NaN.当然,您也可以采用其他方式进行数学计算,然后检查NaN.:)