std::isnan
提供: cppreference.com
ヘッダ <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) 値かどうか調べます目次 |
[編集] 引数
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; }
[編集] 例
Run this code
#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 (非数) を返します (関数) |
(C++11) |
指定された浮動小数点値を分類します (関数) |
(C++11) |
指定された数値が有限値を持つかどうか調べます (関数) |
(C++11) |
指定された数値が無限大かどうか調べます (関数) |
(C++11) |
指定された数値が正規化数かどうか調べます (関数) |
(C++11) |
2つの浮動小数点が順序付けできないかどうか調べます (関数) |
isnan の C言語リファレンス
|