Учебники

Библиотека C —

Заголовочный файл 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

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

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

Live Demo

#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);
}

Давайте скомпилируем и запустим вышеуказанную программу, которая даст следующий результат —