Заголовок описывает характеристики типа данных с плавающей точкой для конкретной системы и компилятора. Значение с плавающей точкой (вещественное число) состоит из четырех элементов:

  • знак: либо отрицательный, либо положительный;
  • основание: выражает количество значений, для кодирования чисел, которые могут быть представлены одной цифрой (2 для двоичной, 10 для десятичной, 16 для шестнадцатеричной, и т. д. )
  • мантисса: значение, стоящее перед основанием. Количество цифр в этом значении определяет точность.
  • степень: значение в которое возводится основание следующим образом:
вещественное значение = мантисса * основаниестепень, с соответствующим знаком.

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

За исключением FLT_RADIX, имена которых начинаются с FLT относятся к типу данных с плавающей точкой, DBL - double и LDBL - long double.
Имя Значение Описание
FLT_RADIX 2 Основание для всех типов данных с плавающей точкой (long doubledoublefloat  и ).
FLT_MANT_DIG (float) DBL_MANT_DIG (double) LDBL_MANT_DIG (long double) 24 53 64 Количество цифр мантиссы, соответственно для указанных типов данных.
FLT_DIG (float) DBL_DIG (double) LDBL_DIG (long double) 6 15 18 Количество десятичных цифр, которые могут быть округлены в число с плавающей точкой и обратно, без потери данных.
FLT_MIN_EXP (float) DBL_MIN_EXP (double) LDBL_MIN_EXP (long double)  -125 -1021 -16381 Минимальное отрицательное целое значение для степени, которое генерирует нормализованное число с плавающей точкой (запятой).
FLT_MIN_10_EXP (float) DBL_MIN_10_EXP (double) LDBL_MIN_10_EXP (long double) -37 -307 -4931 Минимальное отрицательное целое значение степени основания 10 выражение, которое будет генерировать нормализованное число с плавающей точкой (запятой).
FLT_MAX_EXP (float) DBL_MAX_EXP (double) LDBL_MAX_EXP (long double) 128 1024 16384 Максимальное целое значение для степени в нормализованной форме представления числа с плавающей точкой (запятой).
FLT_MAX_10_EXP (float) DBL_MAX_10_EXP (double) LDBL_MAX_10_EXP (long double) 383084932 Максимальное целое значение для степени с основанием 10 в нормализованной форме представления числа с плавающей точкой (запятой).
FLT_MAX (float) DBL_MAX (double) LDBL_MAX (long double) 3.40282e+38 1.79769e+308 1.18973e+4932 Максимальные значения чисел с плавающей точкой (запятой).
FLT_EPSILON (float) DBL_EPSILON (double) LDBL_EPSILON (long double) 1.19209e-07 2.22045e-16 1.0842e-19 Разница между 1 и минимальным значением, большим единицы, которое может быть представлено указанными типами данных.
FLT_MIN (float) DBL_MIN (double) LDBL_MIN (long double) 1.17549e-38 2.22507e-308 3.3621e-4932 Минимальные значения чисел с плавающей точкой (запятой)

Для того, чтобы было по понятнее и немного нагляднее, о каких цифрах идет речь, преобразую одно из значений к нормальной форме. Возьмем, например, значение LDBL_EPSILON, как уже было сказано - это разница между 1 и минимальным значением, большим 1, для типа данных long double.

Это значение содержит 63 разряда после запятой, но вы ещё больше удивитесь, если преобразуете последнюю константу LDBL_MIN, вы увидите   около 5000 нулей после запятой и только после этого отображаются какие-то значения, отличные от нуля. Я даже не знаю как выговорить такие числа.

Автор:
Дата:
Поделиться: