Заголовочный файл float.h Стандартной библиотеки C содержит набор различных зависящих от платформы констант, связанных со значениями с плавающей запятой. Эти константы предложены ANSI C. Они позволяют создавать более переносимые программы. Прежде чем проверять все константы, полезно понять, что число с плавающей запятой состоит из следующих четырех элементов:
Sr.No. | Компонент и описание компонента |
---|---|
1 |
S знак (+/-) |
2 |
б основание или основание представления степени, 2 для двоичного числа, 10 для десятичного числа, 16 для шестнадцатеричного числа и так далее … |
3 |
е экспонента, целое число между минимальным e min и максимальным e max . |
4 |
п точность, число цифр base-b в значим. |
S
знак (+/-)
б
основание или основание представления степени, 2 для двоичного числа, 10 для десятичного числа, 16 для шестнадцатеричного числа и так далее …
е
экспонента, целое число между минимальным e min и максимальным e max .
п
точность, число цифр base-b в значим.
Основываясь на вышеупомянутых 4 компонентах, значение с плавающей запятой будет иметь следующее значение:
floating-point = ( S ) p x b e or floating-point = (+/-) precision x base exponent
Макросы библиотеки
Следующие значения зависят от реализации и определяются с помощью директивы #define, но эти значения могут быть не ниже указанных здесь. Обратите внимание, что во всех случаях FLT относится к типу float , DBL относится к double , а LDBL относится к long double .
Sr.No. | Макрос и описание |
---|---|
1 |
FLT_ROUNDS Определяет режим округления для сложения с плавающей запятой и может иметь любое из следующих значений:
|
2 |
FLT_RADIX 2 Это определяет базовое представление степени экспоненты. Base-2 — это двоичное, base-10 — нормальное десятичное представление, base-16 — Hex. |
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 Эти макросы определяют минимальные значения с плавающей точкой. |
FLT_ROUNDS
Определяет режим округления для сложения с плавающей запятой и может иметь любое из следующих значений:
FLT_RADIX 2
Это определяет базовое представление степени экспоненты. Base-2 — это двоичное, base-10 — нормальное десятичное представление, base-16 — Hex.
FLT_MANT_DIG
DBL_MANT_DIG
LDBL_MANT_DIG
Эти макросы определяют количество цифр в номере (в базе FLT_RADIX).
FLT_DIG 6
DBL_DIG 10
LDBL_DIG 10
Эти макросы определяют максимальное количество десятичных цифр (основание-10), которое может быть представлено без изменений после округления.
FLT_MIN_EXP
DBL_MIN_EXP
LDBL_MIN_EXP
Эти макросы определяют минимальное отрицательное целочисленное значение для показателя степени в базе FLT_RADIX.
FLT_MIN_10_EXP -37
DBL_MIN_10_EXP -37
LDBL_MIN_10_EXP -37
Эти макросы определяют минимальное отрицательное целочисленное значение для показателя степени в основании 10.
FLT_MAX_EXP
DBL_MAX_EXP
LDBL_MAX_EXP
Эти макросы определяют максимальное целочисленное значение для показателя степени в базе FLT_RADIX.
FLT_MAX_10_EXP +37
DBL_MAX_10_EXP +37
LDBL_MAX_10_EXP +37
Эти макросы определяют максимальное целочисленное значение для показателя степени в основании 10.
FLT_MAX 1E + 37
DBL_MAX 1E + 37
LDBL_MAX 1E + 37
Эти макросы определяют максимальное конечное значение с плавающей точкой.
FLT_EPSILON 1E-5
DBL_EPSILON 1E-9
LDBL_EPSILON 1E-9
Эти макросы определяют наименее значимые представляемые цифры.
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); }
Давайте скомпилируем и запустим вышеуказанную программу, которая даст следующий результат —