std::numeric_limits<T>::quiet_NaN
提供: cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev ">
</tbody><tbody>
</tbody>
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 かどうか調べます (関数) |