isnan, _isnan, _isnanf

浮動小数点値が NaN ("Not a Number") かどうかをテストします。

構文

int isnan(
   /* floating-point */ x
); /* C-only macro */

int _isnan(
   double x
);

int _isnanf(
   float x
); /* x64 only */

template <class T>
bool isnan(
   T x
) throw(); /* C++ only */

パラメーター

x
テストする浮動小数点値。

戻り値

C では、引数xisnan_isnan NaN の場合、マクロと関数_isnanfは 0 以外の値を返します。それ以外の場合は 0 を返します。

C++ では、引数が isnan NaN の場合はテンプレート関数が返trueされ、それ以外の場合falsexは .

解説

NaN 値はそれ自体または他の NaN 値と等しいと比較されないため、1 つを検出するには、これらの関数またはマクロのいずれかを使用する必要があります。 NaN は、浮動小数点演算の結果が指定した型の IEEE-754 浮動小数点形式で表現できない場合に生成されます。 出力用に NaN を表す方法については、次を参照してください printf

C++ としてコンパイルすると、 isnan マクロは定義されず、 isnan 代わりにテンプレート関数が定義されます。 マクロと同じように動作しますが、整数ではなく bool 型の値を返します。

_isnan_isnanf は、Microsoft 固有の関数です。 _isnanf 関数は、x64 用にコンパイルするときにのみ使用できます。

必要条件

ルーチンによって返される値 必須ヘッダー (C) 必須ヘッダー (C++)
isnan, _isnanf <math.h> <math.h> または <cmath>
_isnan <float.h> <float.h> または <cfloat>

互換性の詳細については、「 Compatibility」を参照してください。

関連項目

数学と浮動小数点のサポート
fpclassify
_fpclass, _fpclassf
isfinite, _finite, _finitef
isinf
isnormal