Заголовок описывает характеристики типа данных с плавающей точкой для конкретной системы и компилятора. Значение с плавающей точкой (вещественное число) состоит из четырех элементов:
- знак: либо отрицательный, либо положительный;
- основание: выражает количество значений, для кодирования чисел, которые могут быть представлены одной цифрой (2 для двоичной, 10 для десятичной, 16 для шестнадцатеричной, и т. д. )
- мантисса: значение, стоящее перед основанием. Количество цифр в этом значении определяет точность.
- степень: значение в которое возводится основание следующим образом:
Ниже, в таблице показаны названия различных макросов, определенных в этом заголовочном файле, и их минимальные величины. Любая конкретная реализация может иметь значения характеристик больших, чем показано здесь:
FLT_RADIX
, имена которых начинаются с FLT
относятся к типу данных с плавающей точкой, DBL
- double
и LDBL
- long double
.Имя | Значение | Описание |
---|---|---|
FLT_RADIX | 2 | Основание для всех типов данных с плавающей точкой (long double , double , float и ). |
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 нулей после запятой и только после этого отображаются какие-то значения, отличные от нуля. Я даже не знаю как выговорить такие числа.