最終更新日時:
が更新

履歴 編集

class template
<limits>

std::numeric_limits

namespace std {
  template <class T> class numeric_limits;

  template<> class numeric_limits<bool>;
  template<> class numeric_limits<char>;
  template<> class numeric_limits<signed char>;
  template<> class numeric_limits<unsigned char>;
  template<> class numeric_limits<char16_t>; // C++11から追加
  template<> class numeric_limits<char32_t>; // C++11から追加
  template<> class numeric_limits<wchar_t>;

  template<> class numeric_limits<short>;
  template<> class numeric_limits<int>;
  template<> class numeric_limits<long>;
  template<> class numeric_limits<long long>; // C++11から追加
  template<> class numeric_limits<unsigned short>;
  template<> class numeric_limits<unsigned int>;
  template<> class numeric_limits<unsigned long>;
  template<> class numeric_limits<unsigned long long>; // C++11から追加

  template<> class numeric_limits<float>;
  template<> class numeric_limits<double>;
  template<> class numeric_limits<long double>;

  template <class T> class numeric_limits<const T>;          // C++11から追加
  template <class T> class numeric_limits<volatile T>;       // C++11から追加
  template <class T> class numeric_limits<const volatile T>; // C++11から追加
}

std::numeric_limitsクラスは以下の特徴を持つ:

  • 実装が提供する算術型の性質を提供する
  • 浮動小数点型、整数型、bool型について特殊化が提供され、is_specialized=trueになる
  • このクラスのメンバは全て static constexpr として定義されているため、定数式として使いやすい (C++11)
  • std::complexのような非算術型については特殊化は提供されない
  • CV修飾された型をテンプレート引数として指定した場合、CV修飾されていない型を指定した場合と同じになる (C++11)
静的メンバ 性質 対応バージョン
min() 最小値を返す。 浮動小数点型については最小の正の正規化数を返す。
max() 最大値を返す。
lowest() 最小値を返す。-max()と等しい必要は無い C++11
digits 基数 radix において表現できる桁数を示す。 整数型であれば、符号ビット以外のビット数である。
digits10 10進数において表現できる桁数を示す。
max_digits10 浮動小数点数の10進数表現における正確さを損なわない最大の桁数を示す C++11
is_signed 符号付き型かどうかを判定する
is_integer 整数型かどうかを判定する
is_exact 型が正確かどうかを判定する
radix digitsを表現する基数を示す
epsilon() 機械イプシロン。1より大きい数の中で最小の値と1との差。
round_error() 最大の丸め誤差。
min_exponent 指数下限
min_exponent10 10進指数下限
max_exponent 指数上限
max_exponent10 10進指数上限
has_infinity 正の無限表現を持っているかを判定する
has_quiet_NaN シグナルを発生させないNaNを持っているかを判定する
has_signaling_NaN シグナルを発生させるNaNを持っているかを判定する
has_denorm 非正規化数のサポート状況を判定する
has_denorm_loss 精度の損失が非正規化数によるものかを判定する
infinity() 正の無限表現を取得する
quiet_NaN() シグナルを発生させないNaNを取得する
signaling_NaN() シグナルを発生させるNaNを取得する
denorm_min() 最小の非正規化数を取得する
is_iec559 IEC 559標準に準拠しているかを判定する
is_bounded 値のなす集合が有限であるかを判定する
is_modulo 常に合同関係にある型かを判定する
traps トラップが実装されている型かを判定する
tinyness_before 丸めが行われる前に小さな値になることを検出できるかを判定する
round_style 丸めスタイルを取得する

参照