名前空間
変種
操作

std::isnan

提供: cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
一般的な数学関数
関数
基本的な演算
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
指数関数
(C++11)
(C++11)
(C++11)
(C++11)
冪関数
(C++11)
(C++11)
三角関数と双曲線関数
(C++11)
(C++11)
(C++11)
誤差関数とガンマ関数
(C++11)
(C++11)
(C++11)
(C++11)
最も近い整数
(C++11)(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
浮動小数点操作関数
(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)
(C++11)
分類および比較
(C++11)
(C++11)
(C++11)
isnan
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
マクロ定数
(C++11)(C++11)(C++11)(C++11)(C++11)
 
ヘッダ <cmath> で定義
bool isnan( float arg );
(1) (C++11およびそれ以降)
bool isnan( double arg );
(2) (C++11およびそれ以降)
bool isnan( long double arg );
(3) (C++11およびそれ以降)
bool isnan( 整数型 arg );
(4) (C++11およびそれ以降)
1-3) 指定された浮動小数点数 arg が非数 (NaN) 値かどうか調べます
4) 任意の整数型arg 引数を受け取るオーバーロード集合または関数テンプレート。 (2) と同等です (引数は double にキャストされます)。

目次

[編集] 引数

arg - 浮動小数点値

[編集] 戻り値

arg が NaN の場合は true、そうでなければ false

[編集] ノート

異なる符号ビットとペイロードを持つ多くの異なる NaN 値があります。 std::nan および std::numeric_limits::quiet_NaN を参照してください。

NaN 値は自分自身や他の NaN 値と比較して等しくなることはありません。 IEEE-754 では、 NaN のコピーがそのビット表現 (符号およびペイロード) を維持することは要求されませんが、ほとんどの実装は維持します。

浮動小数点値が NaN かどうか調べるもうひとつの方法は、それ自身と比較することです。 bool is_nan(double x) { return x != x; }

[編集]

#include <iostream>
#include <cmath>
#include <cfloat>
 
int main()
{
    std::cout << std::boolalpha
              << "isnan(NaN) = " << std::isnan(NAN) << '\n'
              << "isnan(Inf) = " << std::isnan(INFINITY) << '\n'
              << "isnan(0.0) = " << std::isnan(0.0) << '\n'
              << "isnan(DBL_MIN/2.0) = " << std::isnan(DBL_MIN/2.0) << '\n'
              << "isnan(0.0 / 0.0)   = " << std::isnan(0.0/0.0) << '\n'
              << "isnan(Inf - Inf)   = " << std::isnan(INFINITY - INFINITY) << '\n';
}

出力:

isnan(NaN) = true
isnan(Inf) = false
isnan(0.0) = false
isnan(DBL_MIN/2.0) = false
isnan(0.0 / 0.0)   = true
isnan(Inf - Inf)   = true

[編集] 関連項目

(C++11)(C++11)(C++11)
NaN (非数) を返します
(関数) [edit]
指定された浮動小数点値を分類します
(関数) [edit]
(C++11)
指定された数値が有限値を持つかどうか調べます
(関数) [edit]
(C++11)
指定された数値が無限大かどうか調べます
(関数) [edit]
(C++11)
指定された数値が正規化数かどうか調べます
(関数) [edit]
2つの浮動小数点が順序付けできないかどうか調べます
(関数) [edit]