Liczba zmiennoprzecinkowa
Liczba zmiennoprzecinkowa to reprezentacja liczby rzeczywistej w notacji naukowej. Jej wartość oblicza się według wzoru: , gdzie:
- – znak liczby (1 lub -1),
- – znormalizowana mantysa (liczba ułamkowa),
- – podstawa systemu liczbowego (2 dla systemów komputerowych),
- – wykładnik, liczba całkowita.
Mantysa jest znormalizowana i należy do przedziału . Liczby zmiennoprzecinkowe mają ograniczoną dokładność i mieszczą się w skończonym zbiorze wartości.
Zakres reprezentacji
Zakres wartości reprezentowanych w systemie zmiennoprzecinkowym określają wartości maksymalne i minimalne dla mantysy i wykładnika:
- ,
- .
Wartości te pozwalają określić minimalną i maksymalną reprezentowaną liczbę dodatnią: .
Błędy w reprezentacji
Błąd względny reprezentacji liczby zmiennoprzecinkowej wynosi . W przypadku gdy
Operacje na liczbach zmiennoprzecinkowych
Arytmetyka zmiennoprzecinkowa nie jest łączna ani rozdzielna. Przy obliczeniach mogą występować zaokrąglenia, nieprawidłowe operacje, przepełnienie i niedomiar.
Przykładowe operacje:
x_1 + x_2 = (M_1 + M_2 B^{E_2 – E_1}) B^{E_1} ,x_1 \cdot x_2 = (S_1 S_2) (M_1 M_2) B^{E_1 + E_2} .
Implementacje sprzętowe
Liczby zmiennoprzecinkowe w implementacjach sprzętowych wyrażane są w systemie binarnym (B = 2). Standard IEEE 754 definiuje klasy liczb: pojedynczej precyzji (single) i podwójnej precyzji (double).
Typy zmiennoprzecinkowe w językach programowania
- C, C++: float, double, long double
- Pascal: real
- Fortran: real, DOUBLE PRECISION
Wartości specjalne
W systemach zmiennoprzecinkowych zdefiniowane są wartości specjalne, takie jak:
- NaN (Not-a-Number),
- Zero (+0, -0),
- Nieskończoność (pozytywna i negatywna).
Historia
Pierwsze zastosowanie binarnych liczb zmiennoprzecinkowych miało miejsce w mechanicznych komputerach Konrada Zuse’a.