std::numeric_limits<T>:: quiet_NaN
|
static
T quiet_NaN
(
)
throw
(
)
;
|
(C++11まで) | |
|
static
constexpr
T quiet_NaN
(
)
noexcept
;
|
(C++11以降) | |
浮動小数点型
T
で表現される特殊な値「quiet
not-a-number
」を返します。
std::
numeric_limits
<
T
>
::
has_quiet_NaN
==
true
の場合にのみ意味を持ちます。IEEE 754(浮動小数点数の最も一般的なバイナリ表現)では、指数部の全ビットがセットされ、仮数部の少なくとも1ビットがセットされている値はNaNを表します。仮数部のどの値がquiet NaNまたはsignaling NaNを表すか、および符号ビットが意味を持つかどうかは実装定義です。
目次 |
戻り値
T
|
std:: numeric_limits < T > :: quiet_NaN ( ) |
| /* 特殊化されていない場合 */ | T ( ) |
| bool | false |
| char | 0 |
| signed char | 0 |
| unsigned char | 0 |
| wchar_t | 0 |
| char8_t (C++20以降) | 0 |
| char16_t (C++11以降) | 0 |
| char32_t (C++11以降) | 0 |
| short | 0 |
| unsigned short | 0 |
| int | 0 |
| unsigned int | 0 |
| long | 0 |
| unsigned long | 0 |
| long long (C++11以降) | 0 |
| unsigned long long (C++11以降) | 0 |
| float | 実装定義( NAN の場合あり) |
| double | 実装定義 |
| long double | 実装定義 |
注記
NaNは決して自身と等価と比較されません。NaNのコピーはそのビット表現を保持しない場合があります。
例
NaNを生成するいくつかの方法(出力文字列はコンパイラ依存):
#include <iostream> #include <limits> #include <cmath> int main() { std::cout << std::numeric_limits<double>::quiet_NaN() << ' ' // nan << std::numeric_limits<double>::signaling_NaN() << ' ' // nan << std::acos(2) << ' ' // nan << std::tgamma(-1) << ' ' // nan << std::log(-1) << ' ' // nan << std::sqrt(-1) << ' ' // -nan << 0 / 0.0 << '\n'; // -nan std::cout << "NaN == NaN? " << std::boolalpha << ( std::numeric_limits<double>::quiet_NaN() == std::numeric_limits<double>::quiet_NaN() ) << '\n'; }
出力例:
nan nan nan nan nan -nan -nan NaN == NaN? false
関連項目
|
[static]
|
浮動小数点型が特殊値「quiet not-a-number」(NaN)を表現できるかどうかを識別する
(public static member constant) |
|
[static]
|
指定された浮動小数点型のシグナリングNaN値を返す
(public static member function) |
|
(C++11)
(C++11)
(C++11)
|
非数(NaN)
(function) |
|
(C++11)
|
指定された数値がNaNかどうかをチェックする
(function) |