Biblioteka C - <float.h>

Plik float.hPlik nagłówkowy C Standard Library zawiera zestaw różnych zależnych od platformy stałych powiązanych z wartościami zmiennoprzecinkowymi. Te stałe są proponowane przez ANSI C. Umożliwiają one tworzenie bardziej przenośnych programów. Przed sprawdzeniem wszystkich stałych dobrze jest zrozumieć, że liczba zmiennoprzecinkowa składa się z czterech następujących elementów -

Sr.No. Opis komponentu i komponentu
1

S

znak (+/-)

2

b

podstawa lub podstawa reprezentacji wykładnika, 2 binarne, 10 dziesiętne, 16 szesnastkowe i tak dalej ...

3

e

wykładnik, liczba całkowita od minimum emin i maksymalnie emax.

4

p

precyzja, liczba cyfr bazowych b w mantysie.

W oparciu o powyższe 4 komponenty zmiennoprzecinkowy będzie miał następującą wartość -

floating-point = ( S ) p x be

or

floating-point = (+/-) precision x baseexponent

Biblioteka makr

Poniższe wartości są specyficzne dla implementacji i zdefiniowane za pomocą dyrektywy #define, ale te wartości nie mogą być niższe niż podane tutaj. Zauważ, że we wszystkich przypadkach FLT odnosi się do typufloat, DBL odnosi się do double, a LDBL odnosi się do long double.

Sr.No. Makro i opis
1

FLT_ROUNDS

Definiuje tryb zaokrąglania dla dodawania zmiennoprzecinkowego i może mieć dowolną z następujących wartości -

  • -1 - nieokreślony
  • 0 - w kierunku zera
  • 1 - do najbliższego
  • 2 - ku dodatniej nieskończoności
  • 3 - w kierunku ujemnej nieskończoności
2

FLT_RADIX 2

Definiuje podstawową reprezentację wykładnika potęgi. Podstawa-2 jest binarna, podstawa-10 to normalna reprezentacja dziesiętna, podstawa-16 to szesnastkowy.

3

FLT_MANT_DIG

DBL_MANT_DIG

LDBL_MANT_DIG

Te makra definiują liczbę cyfr w numerze (w bazie FLT_RADIX).

4

FLT_DIG 6

DBL_DIG 10

LDBL_DIG 10

Te makra definiują maksymalną liczbę cyfr dziesiętnych (podstawa-10), które można przedstawić bez zmiany po zaokrągleniu.

5

FLT_MIN_EXP

DBL_MIN_EXP

LDBL_MIN_EXP

Te makra definiują minimalną ujemną wartość całkowitą dla wykładnika w podstawie FLT_RADIX.

6

FLT_MIN_10_EXP -37

DBL_MIN_10_EXP -37

LDBL_MIN_10_EXP -37

Te makra definiują minimalną ujemną wartość całkowitą dla wykładnika o podstawie 10.

7

FLT_MAX_EXP

DBL_MAX_EXP

LDBL_MAX_EXP

Te makra definiują maksymalną wartość całkowitą dla wykładnika w podstawie FLT_RADIX.

8

FLT_MAX_10_EXP +37

DBL_MAX_10_EXP +37

LDBL_MAX_10_EXP +37

Te makra definiują maksymalną wartość całkowitą dla wykładnika o podstawie 10.

9

FLT_MAX 1E+37

DBL_MAX 1E+37

LDBL_MAX 1E+37

Te makra definiują maksymalną skończoną wartość zmiennoprzecinkową.

10

FLT_EPSILON 1E-5

DBL_EPSILON 1E-9

LDBL_EPSILON 1E-9

Te makra definiują najmniej znaczącą cyfrę, którą można przedstawić.

11

FLT_MIN 1E-37

DBL_MIN 1E-37

LDBL_MIN 1E-37

Te makra definiują minimalne wartości zmiennoprzecinkowe.

Przykład

Poniższy przykład pokazuje użycie kilku stałych zdefiniowanych w pliku 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);
}

Skompilujmy i uruchommy powyższy program, który da następujący wynik -

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