Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

How to Determine the Kind of a Number From std::numeric_limits

Boost , Chapter 1. Boost.Multiprecision , Numeric Limits

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Основываясь на приведенной выше информации, можно увидеть, что различные типы чисел могут быть дифференцированы на основе информации, хранящейся в<std::numeric_limits>. Это дополнение к классу признаковnumber_category, предоставленному этой библиотекой.

Integer Types

Для целого типа Т выполняются все следующие условия:

std::numeric_limits<T>::is_specialized == true
std::numeric_limits<T>::is_integer == true
std::numeric_limits<T>::is_exact == true
std::numeric_limits<T>::min_exponent == 0
std::numeric_limits<T>::max_exponent == 0
std::numeric_limits<T>::min_exponent10 == 0
std::numeric_limits<T>::max_exponent10 == 0

Кроме того, типподписан, если:

std::numeric_limits<T>::is_signed == true

Если тип имеет произвольную точность, то:

std::numeric_limits<T>::is_bounded == false

В противном случае тип ограничен и возвращает ненулевое значение от:

std::numeric_limits<T>::max()

и имеет:

std::numeric_limits<T>::is_modulo == true

если тип реализует арифметику модуля по переполнению.

Rational Types

Рациональные типы подобны целым числам, за исключением того, что:

std::numeric_limits<T>::is_integer == false
Fixed Precision Types

По-видимому, нет никакого способа отличить их от рациональных типов, если они не устанавливают:

std::numeric_limits<T>::is_exact == false

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

floating-point Types

Для типа Т с плавающей точкой выполняются все следующие условия:

std::numeric_limits<T>::is_specialized == true
std::numeric_limits<T>::is_integer == false
std::numeric_limits<T>::is_exact == false
std::numeric_limits<T>::min_exponent != 0
std::numeric_limits<T>::max_exponent != 0
std::numeric_limits<T>::min_exponent10 != 0
std::numeric_limits<T>::max_exponent10 != 0

Кроме того, типподписан, если:

std::numeric_limits<T>::is_signed == true

И тип может быть десятичным или двоичным в зависимости от значения:

std::numeric_limits<T>::radix

Как правило, не существует типов с произвольной точностью плавающей точки, и поэтому:

std::numeric_limits<T>::is_bounded == false
Exact floating-point Types

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

std::numeric_limits<T>::is_exact == true
Complex Numbers

По историческим причинам комплексные числа не специализируются<std::numeric_limits>, вместо этого необходимо осмотреть<std::numeric_limits<T::value_type>>.


PrevUpHomeNext

Статья How to Determine the Kind of a Number From std::numeric_limits раздела Chapter 1. Boost.Multiprecision Numeric Limits может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Numeric Limits ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:12:54/0.006605863571167/0