|
Программирование >> Операторы преобразования типа
public; Да, для int существует специализация числовых пределов static const bool isspedallzed - true; static T minO throwO { return -2147483648; static T maxO throwO { return 2147483647: static const int digits - 31; Ha этот раз переменной is speciali2ed присвоено значение tnje, а остальные члены класса используют числовые пределы конкретного типа (int в приведенном примере). Обобщенный шаблон numericjimits и его стандартные специализации содержатся в заголовочном файле <llmlts>. Заголовок включает специализации для всех базовых типов, представляющих числовые значения: bool, char, signed char, unsigned char, wchar t, short, unsigned short, Int, unsigned Int, long, unsigned long, float, double и long double. Кроме того, аналогичные специализации легко определяются для пользовательских числовых типов. В табл. 4.2 перечислены все члены класса numerlcjimltso с краткими описаниями, В правом столбце приводятся соответствующие константы С, определяемые в заголовочных файлах <cllmlts>, <llmlts.h>, <cfloat> и <float.h>. Таблица 4.2. Члены класса numericjimltso Член класса Описание Константы С ls spedalized Тип поддерживает специализацию числовых пределов ls slgned Знаковый тип isjnteger Целочисленный тип ts.exact Вычисления производятся без ошибок округления (true для всех целочисленных типов) is bounded Тип имеет конечный набор допустимых значений (true для всех встроенных типов) is modulo Поддерживается сложение по модулю (суммирование двух попожительных чисел может привести к меньшему результату) Isjec559 Тип соответствует стандартам 1ЕС 559 и IEEE 754 Член класса Описание Константы С min() max() digits digitslO radix min exponent niax exponent min exponentlO maxexponentlO epsiionO round style round error() hasjnfinity InfinityO has quiet NaN quieLNaN has signaiing NaN slgnaiing NaN() has denorm Минимальное конечное значение (минимальное нормализованное значение для вещественных типов с денормализацией; имеет смысл, если is bounded}!is j5igned) Максимальное конечное значение (имеет смысл, если is bounded) Символьные, целочисленные типы - количество незнаковых битов; вещественные типы - количество цифр основания radix (см. далее) в мантиссе Количество десятичных цифр (имеет смысл, если is bounded) Целочисленные типы - основание системы счисления, использованной для представления (почти всегда 2); вещественные типы - основание системы счисления, использованной для представления экспоненты Минимальный отрицательный целый показатель степени с основанием radix Максимальный положительный целый показатель степени с основанием radix Минимальный отрицательный целый показатель степени с основанием 10 Максимальный положительный целый показатель степени с основанием 10 Разность между 1 и минимальной величиной, большей 1 Стиль округления (см. с. 77) Оценка максимальной ошибки округления (в соответствии со стандартом ISO/IEC 10967-1) Признак наличия представления для положительной бесконечности Представление положительной бесконечности (если оно есть) Признак наличия пассивного представления NaN ( не число ) Пассивное представление NaN Признак наличия сигнального представления NaN Сигнальное представление NaN Возможность представления денормализованных значений (с переменным количеством битов экспоненты - см. с. 77) INT MIN, FLT MIN, CHAR MIN, ... INT MAX, FLT MAX, ... CHAR BIT FLT DIG, ... FLT RADIX FLT MIN EXP, ... FLT MAX EXP,... FLT MIN 10 EXP, FLT MAX 10 EXP, FLT EPSILON,... продолжение Таблица 4.2 (продолжение) Член класса Описание Константы С has clenormJoss Потеря точности обнаруживается как потеря денормализации, а не как неточный результат denorni mtn() Минимальное положительное денормализованное значение traps В типе реализован механизм ловушек tinyness.before Предельно малые значения обнаруживаются перед округлением Ниже приведен один из вариантов полной специализации числовых пределов для зависимого от платформы типа float. Кроме того, в нем приведены точные сигнатуры членов. namespace std { templateo class numericJimlts<float> { publ1 с: Да. для float существует специализация числовых пределов static const bool is specialized = true; inline static float min() throwO { return 1.17549435E-38F; inline static float maxO throwO { return 3.402e2347E+38F; static const int digits = 24; static const 1nt digitslO = 6: static const bool is slgned = true; static const bool is 1nteger = false: static const bool is exact = false; static const bool is bounded -= true; static const bool is modulo = false; static const bool isjec559 = true; static const int radix = 2; inline static float epsilonO throwO { return 1.19209290E-07F: static const float round style round style = round to nearest; inline static float round error() throwO {
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |