std::numeric_limits<T>::quiet_NaN
提供: cppreference.com
< cpp | types | numeric limits
static T quiet_NaN() throw(); |
(C++11未満) | |
static constexpr T quiet_NaN() noexcept; |
(C++11以上) | |
浮動小数点型 T
によって表現される特殊な値「quiet NaN」を返します。 std::numeric_limits<T>::has_quiet_NaN == true の場合にのみ意味があります。 IEEE 754 (浮動小数点数の最も一般的な2進表現) では、指数部のすべてのビットがセットされ、仮数部の少なくともひとつのビットがセットされたあらゆる値が NaN です。 仮数部のどの値が quiet NaN や signalilng NaN を表すか、および符号ビットが意味を持つかどうかは処理系定義です。
目次 |
[編集] 戻り値
T
|
std::numeric_limits<T>::quiet_NaN() |
/* 非特殊化 */ | T()
|
bool | false |
char | 0 |
signed char | 0 |
unsigned char | 0 |
wchar_t | 0 |
char8_t | 0 |
char16_t | 0 |
char32_t | 0 |
short | 0 |
unsigned short | 0 |
int | 0 |
unsigned int | 0 |
long | 0 |
unsigned long | 0 |
long long | 0 |
unsigned long long | 0 |
float | NAN または処理系定義の別の NaN |
double | 処理系定義 |
long double | 処理系定義 |
[編集] ノート
NaN はそれ自身と比較しても等しくなりません。 NaN のコピーはそのビット表現を維持しないかもしれません。
[編集] 例
NaN を生成するいくつかの方法 (出力の文字列はコンパイラ固有です)。
Run this code
#include <iostream> #include <limits> #include <cmath> int main() { std::cout << std::numeric_limits<double>::quiet_NaN() << ' ' << std::numeric_limits<double>::signaling_NaN() << ' ' << std::acos(2) << ' ' << std::tgamma(-1) << ' ' << std::log(-1) << ' ' << std::sqrt(-1) << ' ' << 0 / 0.0 << '\n'; 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
[編集] 関連項目
[静的] |
特殊な値「quiet NaN」を表現可能な浮動小数点型を識別します (パブリック静的メンバ定数) |
[静的] |
指定された浮動小数点型の signaling NaN の値を返します (パブリック静的メンバ関数) |
(C++11)(C++11)(C++11) |
NaN (非数) を返します (関数) |
(C++11) |
指定された数値が NaN かどうか調べます (関数) |