Это тип числовых ограничений, который предоставляет информацию о свойствах арифметических типов (целочисленных или с плавающей запятой) в конкретной платформе, для которой компилируется библиотека.
декларация
Ниже приводится объявление для std :: numeric_limits.
template <class T> numeric_limits;
C ++ 11
template <class T> numeric_limits;
параметры
T — это тип класса.
пример
В примере ниже для std :: numeric_limits.
#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 или |
Максимум() | 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 |
Это минимальное отрицательное целочисленное значение, такое, что основание, возведенное в Эквивалент 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, возведенный в Эквивалент 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 |
Минимальное положительное денормализованное значение. Это для типов, не допускающих денормализованные значения: то же, что |
is_iec559 | bool |
Тип IEC-559 всегда имеет has_infinity , has_quiet_NaN и has_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 , если стиль округления не определим во время компиляции.
Для всех вышеперечисленных типов, которые не являются основными арифметическими типами, используется определение шаблона по умолчанию —