Библиотека 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

Определяет режим округления для сложения с плавающей запятой и может иметь любое из следующих значений:

  • -1 - неопределимый
  • 0 - в сторону нуля
  • 1 - до ближайшего
  • 2 - в сторону положительной бесконечности
  • 3 - в сторону отрицательной бесконечности
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