Учебники

Библиотека C ++ — <пределы>

Это тип числовых ограничений, который предоставляет информацию о свойствах арифметических типов (целочисленных или с плавающей запятой) в конкретной платформе, для которой компилируется библиотека.

декларация

Ниже приводится объявление для std :: numeric_limits.

template <class T> numeric_limits; 

C ++ 11

template <class T> numeric_limits; 

параметры

T — это тип класса.

пример

В примере ниже для std :: numeric_limits.

Live Demo

#include <limits>
#include <iostream>

int main() {
   std::cout << "type\tlowest type\thighest type\n";
   std::cout << "int\t"
      << std::numeric_limits<int>::lowest() << '\t'
      << std::numeric_limits<int>::max() << '\n';
   std::cout << "float\t"
      << std::numeric_limits<float>::lowest() << '\t'
      << std::numeric_limits<float>::max() << '\n';
   std::cout << "double\t"
      << std::numeric_limits<double>::lowest() << '\t'
      << std::numeric_limits<double>::max() << '\n';
}

Пример вывода должен быть таким:

type	lowest type	highest type
int	-2147483648	2147483647
float	-3.40282e+38	3.40282e+38
double	-1.79769e+308	1.79769e+308

Шаблонные экземпляры

Основные арифметические типы C ++ 98 должны быть такими:

основные арифметические типы
интегральные типы bool
char
wchar_t
signed char
short int
int
long int
unsigned char
unsigned short int
unsigned int
unsigned long int
типы с плавающей точкой float
double
long double

Основные арифметические типы C ++ 11 должны быть такими:

основные арифметические типы
интегральные типы bool
char
char16_t
char32_t
wchar_t
signed char
short int
int
long int
long long int
unsigned char
unsigned short int
unsigned int
unsigned long int
unsigned long long int
типы с плавающей точкой float
double
long double

члены

член тип имущество
is_specialized bool Это true для всех (т. Е. Тех, для которых numeric_limits специализирован). и false для всех других типов.
мин () T

Это минимальное конечное значение.

Для плавающих типов с денормализацией (переменное число экспонентных битов): минимальное положительное нормализованное значение.

Эквивалент CHAR_MIN , SCHAR_MIN , SHRT_MIN , INT_MIN , LONG_MIN , LLONG_MIN , FLT_MIN , BL_MIN , LDBL_MIN или 0 , в зависимости от типа.

Максимум() T

Это максимальное конечное значение.

Эквивалент CHAR_MAX , SCHAR_MAX , UCHAR_MAX , SHRT_MAX , USHRT_MAX , INT_MAX , UINT_MAX , LONG_MAX , ULONG_MAX , LLONG_MAX , ULLONG_MAX , UINT_LEMA16_MAX , UX_LX_LX_LX_LX_LX_LB_LX_LB_LX_LB_LX_LBT_LX_LBT_LX_LX_LBT_LX_LBT_LX_LBT_LX_DL_LX_BL_ , LX_LET

низкий () T

Это минимальное конечное значение. (начиная с C ++ 11)

Для целочисленных типов: так же, как min () .

Для типов с плавающей точкой: зависит от реализации; как правило, минус max () .

цифры ИНТ

Это для целочисленных типов: количество незнаковых битов (базовых цифр радиуса ) в представлении.

Для плавающих типов: количество цифр (в радикальной базе) в мантиссе (эквивалентно FLT_MANT_DIG , DBL_MANT_DIG или LDBL_MANT_DIG ).

digits10 int

Это количество цифр (в десятичной основе), которое может быть представлено без изменений.

Эквивалент FLT_DIG , DBL_DIG или LDBL_DIG для плавающих типов.

max_digits10 int Это число цифр (в десятичной основе), которое требуется для обеспечения того, чтобы значения, которые отличаются, всегда дифференцировались.
is_signed bool true если тип подписан.
is_integer bool true если тип является целым числом.
is_exact bool true если тип использует точные представления.
основание системы счисления int

Это для целочисленных типов: основание представления.

Для плавающих типов: база показателя степени представления (эквивалент FLT_RADIX ).

эпсилон () T

Это машинный эпсилон (разница между 1 и наименьшим значением, которое больше 1).

Эквивалент FLT_EPSILON , DBL_EPSILON или LDBL_EPSILON для плавающих типов.

round_error () T Он измеряет максимальную погрешность округления.
min_exponent int

Это минимальное отрицательное целочисленное значение, такое, что основание, возведенное в (min_exponent-1) генерирует нормализованное число с плавающей запятой.

Эквивалент FLT_MIN_EXP , DBL_MIN_EXP или LDBL_MIN_EXP для плавающих типов.

min_exponent10 int

Это минимальное отрицательное целочисленное значение, такое, что 10, возведенное в эту степень, генерирует нормализованное число с плавающей запятой.

Эквивалентно FLT_MIN_10_EXP , DBL_MIN_10_EXP или LDBL_MIN_10_EXP для плавающих типов.

max_exponent int

Это максимальное целочисленное значение, такое, что radix, возведенный в (max_exponent-1) генерирует представимое конечное число с плавающей запятой.

Эквивалент FLT_MAX_EXP , DBL_MAX_EXP или LDBL_MAX_EXP для плавающих типов.

max_exponent10 int

Это максимальное целочисленное значение, такое, что 10, возведенное в эту степень, генерирует нормализованное конечное число с плавающей запятой.

Эквивалентно FLT_MAX_10_EXP , DBL_MAX_10_EXP или LDBL_MAX_10_EXP для плавающих типов.

has_infinity bool true если тип имеет представление для положительной бесконечности.
has_quiet_NaN bool true если тип имеет представление для тихого (не сигнального) «Not-a-Number».
has_signaling_NaN bool true если тип имеет представление для сигнализации «Not-a-Number».
has_denorm float_denorm_style

Это денормализованные значения (представления с переменным числом экспонентных битов). Тип может иметь любое из следующих значений перечисления:

denorm_absent , если он не допускает денормализованные значения.

denorm_present , если он допускает денормализованные значения.

denorm_indeterminate , если не определено во время компиляции.

has_denorm_loss bool true если потеря точности определяется как потеря денормализации, а не как неточный результат.
бесконечности () T Это представляет положительную бесконечность , если доступно.
quiet_NaN () T Он представляет тихий (не сигнальный) «Not-a-Number» , если имеется.
signaling_NaN () T Он представляет собой сигнализацию «Not-a-Number» , если она доступна.
denorm_min () T

Минимальное положительное денормализованное значение.

Это для типов, не допускающих денормализованные значения: то же, что min() .

is_iec559 bool

true если тип соответствует стандарту IEC-559 / IEEE-754.

Тип IEC-559 всегда имеет has_infinity , has_quiet_NaN и has_signaling_NaN, установленный в true ; И бесконечность , quiet_NaN и signaling_NaN возвращают некоторое ненулевое значение.

is_bounded bool Значение true если набор значений, представленных типом, конечен.
is_modulo bool true если тип является модулем. Тип является модульным, если возможно добавить два положительных числа и получить результат, который оборачивается третьим числом, которое меньше.
ловушки bool true если для типа реализовано перехват.
tinyness_before bool true если крошечность обнаружена до округления.
round_style float_round_style

Это стиль округления. Тип может иметь любое из следующих значений перечисления:

round_toward_zero , если он округляется до нуля.

round_to_nearest , если округляется до ближайшего представимого значения.

round_toward_infinity , если она округляется до бесконечности.

round_toward_neg_infinity , если он округляется до отрицательной бесконечности.

round_indeterminate , если стиль округления не определим во время компиляции.

Это минимальное конечное значение.

Для плавающих типов с денормализацией (переменное число экспонентных битов): минимальное положительное нормализованное значение.

Эквивалент CHAR_MIN , SCHAR_MIN , SHRT_MIN , INT_MIN , LONG_MIN , LLONG_MIN , FLT_MIN , BL_MIN , LDBL_MIN или 0 , в зависимости от типа.

Это максимальное конечное значение.

Эквивалент CHAR_MAX , SCHAR_MAX , UCHAR_MAX , SHRT_MAX , USHRT_MAX , INT_MAX , UINT_MAX , LONG_MAX , ULONG_MAX , LLONG_MAX , ULLONG_MAX , UINT_LEMA16_MAX , UX_LX_LX_LX_LX_LX_LB_LX_LB_LX_LB_LX_LBT_LX_LBT_LX_LX_LBT_LX_LBT_LX_LBT_LX_DL_LX_BL_ , LX_LET

Это минимальное конечное значение. (начиная с C ++ 11)

Для целочисленных типов: так же, как min () .

Для типов с плавающей точкой: зависит от реализации; как правило, минус max () .

Это для целочисленных типов: количество незнаковых битов (базовых цифр радиуса ) в представлении.

Для плавающих типов: количество цифр (в радикальной базе) в мантиссе (эквивалентно FLT_MANT_DIG , DBL_MANT_DIG или LDBL_MANT_DIG ).

Это количество цифр (в десятичной основе), которое может быть представлено без изменений.

Эквивалент FLT_DIG , DBL_DIG или LDBL_DIG для плавающих типов.

Это для целочисленных типов: основание представления.

Для плавающих типов: база показателя степени представления (эквивалент FLT_RADIX ).

Это машинный эпсилон (разница между 1 и наименьшим значением, которое больше 1).

Эквивалент FLT_EPSILON , DBL_EPSILON или LDBL_EPSILON для плавающих типов.

Это минимальное отрицательное целочисленное значение, такое, что основание, возведенное в (min_exponent-1) генерирует нормализованное число с плавающей запятой.

Эквивалент FLT_MIN_EXP , DBL_MIN_EXP или LDBL_MIN_EXP для плавающих типов.

Это минимальное отрицательное целочисленное значение, такое, что 10, возведенное в эту степень, генерирует нормализованное число с плавающей запятой.

Эквивалентно FLT_MIN_10_EXP , DBL_MIN_10_EXP или LDBL_MIN_10_EXP для плавающих типов.

Это максимальное целочисленное значение, такое, что radix, возведенный в (max_exponent-1) генерирует представимое конечное число с плавающей запятой.

Эквивалент FLT_MAX_EXP , DBL_MAX_EXP или LDBL_MAX_EXP для плавающих типов.

Это максимальное целочисленное значение, такое, что 10, возведенное в эту степень, генерирует нормализованное конечное число с плавающей запятой.

Эквивалентно FLT_MAX_10_EXP , DBL_MAX_10_EXP или LDBL_MAX_10_EXP для плавающих типов.

Это денормализованные значения (представления с переменным числом экспонентных битов). Тип может иметь любое из следующих значений перечисления:

denorm_absent , если он не допускает денормализованные значения.

denorm_present , если он допускает денормализованные значения.

denorm_indeterminate , если не определено во время компиляции.

Минимальное положительное денормализованное значение.

Это для типов, не допускающих денормализованные значения: то же, что min() .

true если тип соответствует стандарту IEC-559 / IEEE-754.

Тип IEC-559 всегда имеет has_infinity , has_quiet_NaN и has_signaling_NaN, установленный в true ; И бесконечность , quiet_NaN и signaling_NaN возвращают некоторое ненулевое значение.

Это стиль округления. Тип может иметь любое из следующих значений перечисления:

round_toward_zero , если он округляется до нуля.

round_to_nearest , если округляется до ближайшего представимого значения.

round_toward_infinity , если она округляется до бесконечности.

round_toward_neg_infinity , если он округляется до отрицательной бесконечности.

round_indeterminate , если стиль округления не определим во время компиляции.

Для всех вышеперечисленных типов, которые не являются основными арифметическими типами, используется определение шаблона по умолчанию —