std::numeric_limits<T>::quiet_NaN
提供: cppreference.com
< cpp | types | numeric limits
static T quiet_NaN()throw(); | (C++11未満) | |
staticconstexpr 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 |
signedchar | 0 |
unsignedchar | 0 |
wchar_t | 0 |
char8_t | 0 |
char16_t | 0 |
char32_t | 0 |
short | 0 |
unsignedshort | 0 |
int | 0 |
unsignedint | 0 |
long | 0 |
unsignedlong | 0 |
longlong | 0 |
unsignedlonglong | 0 |
float | NAN または処理系定義の別の NaN |
double | 処理系定義 |
longdouble | 処理系定義 |
[編集]ノート
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 かどうか調べます (関数) |