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 では、引数x
が NaN の場合、isnan
マクロと_isnan
関数と_isnanf
関数は 0 以外の値を返します。それ以外の場合は 0 を返します。
C++ では、引数x
が NaN の場合、isnan
テンプレート関数はtrue
を返します。それ以外の場合は、false
を返します。
解説
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