Библиотека C - <float.h>
В float.hЗаголовочный файл стандартной библиотеки C содержит набор различных платформенно-зависимых констант, связанных со значениями с плавающей запятой. Эти константы предложены ANSI C. Они позволяют создавать более переносимые программы. Прежде чем проверять все константы, хорошо понять, что число с плавающей запятой состоит из следующих четырех элементов:
Sr. No. | Компонент и описание компонентов |
---|---|
1 | S знак (+/-) |
2 | b основание или основание системы счисления экспоненты, 2 для двоичного, 10 для десятичного, 16 для шестнадцатеричного и т. д. |
3 | e экспонента, целое число от минимума emin и максимум emax. |
4 | p точность, количество цифр с основанием b в мантиссе. |
Основываясь на приведенных выше 4 компонентах, значение с плавающей запятой будет следующим:
floating-point = ( S ) p x be
or
floating-point = (+/-) precision x baseexponent
Макросы библиотеки
Следующие значения зависят от реализации и определены с помощью директивы #define, но эти значения не могут быть ниже, чем указано здесь. Обратите внимание, что во всех случаях FLT относится к типуfloat, DBL относится к double, а LDBL относится к long double.
Sr. No. | Макрос и описание |
---|---|
1 | FLT_ROUNDS Определяет режим округления для сложения с плавающей запятой и может иметь любое из следующих значений:
|
2 | FLT_RADIX 2 Это определяет базовое основание системы счисления экспоненты. Основание-2 - двоичное, основание-10 - нормальное десятичное представление, основание-16 - шестнадцатеричное. |
3 | FLT_MANT_DIG DBL_MANT_DIG LDBL_MANT_DIG Эти макросы определяют количество цифр в номере (в базе FLT_RADIX). |
4 | FLT_DIG 6 DBL_DIG 10 LDBL_DIG 10 Эти макросы определяют максимальное количество десятичных цифр (основание 10), которое может быть представлено без изменений после округления. |
5 | FLT_MIN_EXP DBL_MIN_EXP LDBL_MIN_EXP Эти макросы определяют минимальное отрицательное целочисленное значение для экспоненты в базе FLT_RADIX. |
6 | FLT_MIN_10_EXP -37 DBL_MIN_10_EXP -37 LDBL_MIN_10_EXP -37 Эти макросы определяют минимальное отрицательное целое число для экспоненты с основанием 10. |
7 | FLT_MAX_EXP DBL_MAX_EXP LDBL_MAX_EXP Эти макросы определяют максимальное целочисленное значение для экспоненты в базе FLT_RADIX. |
8 | FLT_MAX_10_EXP +37 DBL_MAX_10_EXP +37 LDBL_MAX_10_EXP +37 Эти макросы определяют максимальное целочисленное значение для экспоненты с основанием 10. |
9 | FLT_MAX 1E+37 DBL_MAX 1E+37 LDBL_MAX 1E+37 Эти макросы определяют максимальное конечное значение с плавающей запятой. |
10 | FLT_EPSILON 1E-5 DBL_EPSILON 1E-9 LDBL_EPSILON 1E-9 Эти макросы определяют наименее значимую представляемую цифру. |
11 | FLT_MIN 1E-37 DBL_MIN 1E-37 LDBL_MIN 1E-37 Эти макросы определяют минимальные значения с плавающей запятой. |
пример
В следующем примере показано использование нескольких констант, определенных в файле float.h.
#include <stdio.h>
#include <float.h>
int main () {
printf("The maximum value of float = %.10e\n", FLT_MAX);
printf("The minimum value of float = %.10e\n", FLT_MIN);
printf("The number of digits in the number = %.10e\n", FLT_MANT_DIG);
}
Давайте скомпилируем и запустим вышеуказанную программу, которая выдаст следующий результат:
The maximum value of float = 3.4028234664e+38
The minimum value of float = 1.1754943508e-38
The number of digits in the number = 7.2996655210e-312