Numeric limits c что это
Перейти к содержимому

Numeric limits c что это

std :: numeric_limits :: max () и std :: numeric_limits :: min () в C ++

Параметр: он принимает любой тип данных, т . Е. T.

Программа 1:

Ниже приведена программа, иллюстрирующая функцию std :: numeric_limits <T> :: max () . Вывод программы зависит от системы.

std :: numeric_limits :: min () :

Функция std :: numeric_limits <T> :: min () используется для получения минимального конечного значения, представляемого числовым типом T. Все ограниченные арифметические типы действительны для типа T.

Заголовочный файл:

Шаблон:

Синтаксис:

Параметр: он принимает любой тип данных, т . Е. T.

Программа 2:

Ниже приведена программа, иллюстрирующая функцию std :: numeric_limits <T> :: min () . Вывод программы зависит от системы.

Класс numeric_limits

Шаблон класса описывает арифметические свойства встроенных числовых типов.

Синтаксис

Параметры

Тип
Базовый тип данных элемента, свойства которого проверяются, запрашиваются или устанавливаются. Тип также можно объявить const или volatile const volatile .

Remarks

Заголовок определяет явные специализации для типов wchar_t , long long int unsigned short unsigned int double float long double unsigned long unsigned long long char16_t bool signed char char32_t char unsigned char short long и . Для этих явных специализаций член numeric_limits::is_specialized является true , а все соответствующие элементы имеют значимые значения. Программа может предоставлять дополнительные явные специализации. Большинство функций — членов класса описывают или проверяют возможные реализации float .

Для произвольной специализации у членов нет значимых значений. Объект-член, у которого нет значимых значений, сохраняет ноль (или false ), а функция-член, не возвращающая значимое значение, возвращает Type(0) .

Статические функции и константы

Имя Описание
denorm_min Возвращает наименьшее ненулевое денормализованное значение.
digits Возвращает количество цифр основания системы счисления, которое тип может представлять без потери точности.
digits10 Возвращает количество дробных десятичных цифр, которое тип может представлять без потери точности.
epsilon Возвращает разницу между 1 и наименьшим значением больше 1, которое этот тип данных может представлять.
has_denorm Проверяет, допускает ли тип денормализованные значения.
has_denorm_loss Проверяет, обнаружена ли потеря точности как потеря денормализации, а не неточный результат.
has_infinity Проверяет, может ли тип представлять положительную бесконечность.
has_quiet_NaN Проверяет, имеет ли тип представление для неспокойного числа (NAN), который не сигнализирует.
has_signaling_NaN Проверяет, может ли тип представлять сообщения об обнаружении нечисла (NAN).
Бесконечности Представление положительной бесконечности для типа, если доступно.
is_bounded Проверяет, конечен ли набор значений, представляемый типом.
is_exact Проверяет, не содержат ли вычисления с типом ошибок округления.
is_iec559 Проверяет, соответствует ли тип стандартам IEC 559.
is_integer Проверяет, может ли тип представлять целые числа.
is_modulo Проверяет, может ли тип представлять модуль.
is_signed Проверяет, может ли тип представлять числа со знаком.
is_specialized Проверяет, имеет ли тип явную специализацию, определенную в шаблоне numeric_limits класса.
Низкой Возвращает наибольшее отрицательное конечное значение.
max Возвращает максимальное конечное значение типа.
max_digits10 Возвращает количество цифр дробной части, необходимых, чтобы у двух различных значений типа были уникальные десятичные представления.
max_exponent Возвращает максимальную положительную целую степень, которую тип с плавающей запятой может представить как конечное значение при возведении основания системы счисления в эту степень.
max_exponent10 Возвращает максимальную положительную целую степень, которую тип с плавающей запятой может представить как конечное значение при возведении десяти в эту степень.
min Возвращает минимальное нормализованное значение для типа.
min_exponent Возвращает максимальную отрицательную целую степень, которую тип с плавающей запятой может представить как конечное значение при возведении основания системы счисления в эту степень.
min_exponent10 Возвращает максимальную отрицательную целую степень, которую тип с плавающей запятой может представить как конечное значение при возведении десяти в эту степень.
quiet_NaN Возвращает представление «тихого» нечисла (NAN) для типа.
Radix Возвращает целочисленное основание системы счисления, используемое для представления типа.
round_error Возвращает максимальную ошибку округления для типа.
round_style Возвращает значение, описывающее различные методы, которые могут быть выбраны реализацией для округления значения с плавающей запятой до целочисленного.
signaling_NaN Возвращает представление обозначения нечисла (NAN) для типа.
tinyness_before Проверяет, может ли тип определить, что значение слишком мало для представления в качестве нормализованного значения, до его округления.
traps Проверяет, реализованы ли для типа исключения при выполнении арифметических операций.

denorm_min

Возвращает наименьшее ненулевое денормализованное значение.

Возвращаемое значение

Наименьшее ненулевое денормализованное значение.

Remarks

long double совпадает с double компилятором C++.

Функция возвращает минимальное значение для типа, которое совпадает с минимальной , если has_denorm не равен denorm_present .

Пример

digits

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

Возвращаемое значение

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

Remarks

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

Пример

digits10

Возвращает количество дробных десятичных цифр, которое тип может представлять без потери точности.

Возвращаемое значение

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

Пример

epsilon

Функция возвращает разницу между 1 и наименьшим значением больше 1, которое может быть представлено для типа данных.

Возвращаемое значение

Разница между 1 и наименьшим значением больше 1, которое может быть представлено для типа данных.

Remarks

Значение равно FLT_EPSILON для типа float . epsilon для типа — это наименьшее положительное число с плавающей запятой N, которое + epsilon + представляет NN.

Пример

has_denorm

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

Возвращаемое значение

Значение перечисления типа const float_denorm_style , указывающее, допускает ли тип денормализованные значения.

Remarks

Член хранит denorm_present тип с плавающей запятой, имеющий денормализованные значения, фактически переменное число битов экспоненты.

Пример

has_denorm_loss

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

Возвращаемое значение

true Значение , если потеря точности обнаружена как потеря денормализации; false Если нет.

Remarks

Член сохраняет значение true для типа, который определяет была ли потеря точности связана с представлением в виде денормализованного результата (слишком маленькое для представления в виде нормализованного значения) или поскольку оно неточное (отличается от результата, не подверженного ограничениям диапазона экспоненты и точности), опция с представлениями IEC 559 с плавающей точкой, которые могут повлиять не некоторые результаты.

Пример

has_infinity

Проверяет, может ли тип представлять положительную бесконечность.

Возвращаемое значение

true Значение , если тип имеет представление для положительной бесконечности; false Если нет.

Remarks

Элемент возвращается true , если is_iec559 . true

Пример

has_quiet_NaN

Проверяет, может ли тип представлять «тихое» нечисло (NAN), которое является несигнализирующим.

Возвращаемое значение

true Значение , если тип имеет представление для тихой NAN; false Если нет.

Remarks

«Тихое» NAN — это кодирование для нечисла, которое не обозначает свое присутствие в выражении. Возвращаемое значение имеет значение true , если is_iec559 имеет значение true.

Пример

has_signaling_NaN

Проверяет, может ли тип представлять сообщения об обнаружении нечисла (NAN).

Возвращаемое значение

true Значение , если тип имеет представление для сигнального NAN; false Если нет.

Remarks

Сообщение о нечисле — это кодирование для нечисла, которое сообщает о его присутствии в выражении. Возвращаемое значение имеет значение true , если is_iec559 имеет значение true.

Пример

infinity

Представление положительной бесконечности для типа, если имеется.

Возвращаемое значение

Представление положительной бесконечности для типа, если имеется.

Remarks

Возвращаемое значение имеет смысл только в том случае, если has_infinity . true

Пример

is_bounded

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

Возвращаемое значение

true Значение , если тип имеет ограниченный набор представляемых значений; false Если нет.

Remarks

Все предопределенные типы имеют ограниченный набор представляемых значений и возвращаемых true значений.

Пример

is_exact

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

Возвращаемое значение

true Значение , если вычисления не имеют ошибок округления; false Если нет.

Remarks

Все предопределенные целочисленные типы имеют точное представление значений и возвращаемых значений false . Вещественное представление или представление с фиксированной запятой также считается точным, но представление с плавающей точкой — нет.

Пример

is_iec559

Проверяет, соответствует ли тип стандартам IEC 559.

Возвращаемое значение

true Значение , если тип соответствует стандартам IEC 559; false Если нет.

Remarks

IEC 559 — это международный стандарт для представления значений с плавающей точкой, который также известен в США как IEEE 754.

Пример

is_integer

Проверяет, может ли тип представлять целые числа.

Возвращаемое значение

true Значение , если тип имеет целочисленное представление; false Если нет.

Remarks

Все предопределенные целочисленные типы могут представлять целые числа.

Пример

is_modulo

Проверяет, имеет ли тип представление в модуле.

Возвращаемое значение

true Значение , если тип имеет представление по модулю; false Если нет.

Remarks

Представление по модулю — это представление, в котором все результаты уменьшены по модулю на некоторое значение. Все предопределенные целочисленные беззнаковые типы имеют представление по модулю.

Пример

is_signed

Проверяет, может ли тип представлять числа со знаком.

Возвращаемое значение

true Значение , если тип имеет подписанное представление; false Если нет.

Remarks

Член хранит значение true для типа, который может представлять числа со знаком, что верно для всех предопределенных типов с плавающей точкой и целочисленных типов со знаком.

Пример

is_specialized

Проверяет, имеет ли тип явную специализацию, определенную в шаблоне numeric_limits класса.

Возвращаемое значение

true Значение , если тип имеет явную специализацию, определенную в шаблоне класса; false Если нет.

Remarks

Все скалярные типы, кроме указателей, имеют явную специализацию, определенную для шаблона numeric_limits класса.

Пример

lowest

Возвращает наибольшее отрицательное конечное значение.

Возвращаемое значение

Возвращает наибольшее отрицательное конечное значение.

Remarks

Возвращает наиболее отрицательное конечное значение для типа (для целочисленных типов это обычно min() , а для типов с плавающей точкой — -max() ). Возвращаемое значение является содержательным, если is_bounded имеет значение true .

Возвращает максимальное конечное значение типа.

Возвращаемое значение

Максимальное конечное значение для типа.

Remarks

Максимальное конечное значение — INT_MAX для типа int и FLT_MAX для типа float . Возвращаемое значение имеет смысл, если is_bounded . true

Пример

max_digits10

Возвращает количество цифр дробной части, необходимых, чтобы у двух различных значений типа были уникальные десятичные представления.

Возвращаемое значение

Возвращает количество цифр дробной части, необходимых, чтобы у двух различных значений типа были уникальные десятичные представления.

Remarks

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

max_exponent

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

Возвращаемое значение

Максимальная целочисленная степень для основания системы счисления, представляемая типом.

Remarks

Возвращаемое значение функции-члена имеет смысл только для типов с плавающей запятой. Значение max_exponent FLT_MAX_EXP для типа float .

Пример

max_exponent10

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

Возвращаемое значение

Максимальная целочисленная степень основания 10, которую может представить этот тип.

Remarks

Возвращаемое значение функции-члена имеет смысл только для типов с плавающей запятой. Значение max_exponent FLT_MAX_10 для типа float .

Пример

Возвращает минимальное нормализованное значение для типа.

Возвращаемое значение

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

Remarks

Минимальное нормализованное значение для типа int — INT_MIN, а для типа float — FLT_MIN. Возвращаемое значение имеет смысл, если is_bounded имеет значение true или is_signed имеет значение false .

Пример

min_exponent

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

Возвращаемое значение

Минимальная целочисленная степень основания системы счисления, которую может представить тип.

Remarks

Функция-член имеет смысл только для типов с плавающей запятой. Значение min_exponent FLT_MIN_EXP для типа float .

Пример

min_exponent10

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

Возвращаемое значение

Минимальная целая степень числа 10, которую может представить тип.

Remarks

Функция-член имеет смысл только для типов с плавающей запятой. Значение min_exponent10 FLT_MIN_10_EXP для типа float .

Пример

quiet_NaN

Возвращает представление «тихого» нечисла (NAN) для типа.

Возвращаемое значение

Представление «тихого» нечисла (NAN) для типа.

Remarks

Возвращаемое значение имеет смысл только в том случае, если has_quiet_NaN . true

Пример

radix

Возвращает целочисленное основание системы счисления, используемое для представления типа.

Возвращаемое значение

Целочисленная база для представления типа.

Remarks

Для предопределенных целочисленных типов база — 2, а для предопределенных типов с плавающей запятой — база, в которую можно возвести степень, или FLT_RADIX.

Пример

round_error

Возвращает максимальную ошибку округления для типа.

Возвращаемое значение

Максимальная ошибка округления для типа.

Пример

round_style

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

Возвращаемое значение

Значение из перечисления float_round_style , которое описывает тип округления.

Remarks

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

Метод округления жестко закодирован в реализации, поэтому даже если программа запускается с другим методом округления, это значение не изменится.

Пример

signaling_NaN

Возвращает представление обозначения нечисла (NAN) для типа.

Возвращаемое значение

Представление сообщения о нечисле (NAN) для типа.

Remarks

Возвращаемое значение имеет смысл только в том случае, если has_signaling_NaN . true

Пример

tinyness_before

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

Возвращаемое значение

true , если тип перед округлением может определить, что значение слишком мало; в противном случае false .

Remarks

Типы, которые могут распознавать слишком малые значения, были включены в представления IEC 559 с плавающей запятой в качестве опции и их реализация может влиять на некоторые результаты.

Пример

traps

Проверяет, реализованы ли для типа исключения при выполнении арифметических операций.

Возвращаемое значение

true Значение , если перехват реализован для типа; false Если это не так.

Библиотека C ++ –

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

декларация

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

C ++ 11

параметры

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

пример

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

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

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

Основные арифметические типы 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

члены

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

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

Эквивалент 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 , если стиль округления не определим во время компиляции.

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

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

Эквивалент 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 , если стиль округления не определим во время компиляции.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *