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 -
|
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