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 , если стиль округления не определим во время компиляции.
Для всех вышеперечисленных типов, которые не являются основными арифметическими типами, используется определение шаблона по умолчанию –