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

bounds<> traits class

Boost , Chapter 1. Boost.NumericConversion , Chapter 1. Boost.NumericConversion

Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Для определения диапазонов числовых типов с<std::numeric_limits>[18.2.1] необходимо использовать различный синтаксис в зависимости от численного типа. В частности,<numeric_limits<T>::min()>для интегральных типов возвращает минимальное конечное значение, тогда как для типов с плавающей точкой возвращает минимальное положительное нормализованное значение. Разница в семантике делает клиентский код излишне сложным и подверженным ошибкам.

<boost::numeric::bounds<>>обеспечивает согласованный интерфейс для извлечения максимального конечного значения, минимального конечного значения и минимального положительного нормированного значения (0 для интегральных типов) для числовых типов. Выбор реализации выполняется во время компиляции, поэтому нет накладных расходов на время выполнения.

template<class N>
struct bounds
{
    static N lowest  () { return implementation_defined; }
    static N highest () { return implementation_defined; }
    static N smallest() { return implementation_defined; }
};
Members

<lowest()>

Возвращает минимальное конечное значение, эквивалентное<numeric_limits<T>::min()>, когда<T>является интегральным типом, и<-numeric_limits<T>::max()>, когда<T>является типом с плавающей точкой.

<highest()>

Возвращает максимальное конечное значение, эквивалентное<numeric_limits<T>::max()>.

<smallest()>

Возвращает наименьшее положительное нормализованное значение для типов с плавающей точкой с денормализацией или возвращает 0 для интегральных типов.

Следующий пример показывает использование<numeric::bounds<>>и эквивалентного кода с использованием<numeric_limits>:

#include <iostream>
#include <boost/numeric/conversion/bounds.hpp>
#include <boost/limits.hpp>
int main() {
    std::cout << "numeric::bounds versus numeric_limits example.\n";
    std::cout << "The maximum value for float:\n";
    std::cout << boost::numeric::bounds<float>::highest() << "\n";
    std::cout << std::numeric_limits<float>::max() << "\n";
    std::cout << "The minimum value for float:\n";
    std::cout << boost::numeric::bounds<float>::lowest() << "\n";
    std::cout << -std::numeric_limits<float>::max() << "\n";
    std::cout << "The smallest positive value for float:\n";
    std::cout << boost::numeric::bounds<float>::smallest() << "\n";
    std::cout << std::numeric_limits<float>::min() << "\n";
    return 0;
}

PrevUpHomeNext

Статья bounds<> traits class раздела Chapter 1. Boost.NumericConversion Chapter 1. Boost.NumericConversion может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Chapter 1. Boost.NumericConversion ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:01:57/0.0052571296691895/1