Podręcznik PHP
Poprzedni | Rozdział 11. Typy danych | Następny

# Liczby zmiennoprzecinkowe (float)

Liczby zmiennoprzecinkowe (typ float, double lub liczby rzeczywiste) mogą być zapisane przy użyciu dowolnej z poniższych składni:

    $a = 1.234; $a = 1.2e3; $a = 7E-10;

Maksymalna wielkość liczby zmiennoprzecinkowej jest zależna od platformy operacyjnej, zwykle jest to ~1.8e308, przy precyzji 14 liczb dziesiętnych po przecinku (jest to 64 bitowy format IEEE).

Precyzja liczb zmiennoprzecinkowych

Jest oczywiste, że nawet proste ułamki dziesiętne, takie jak `0.1` lub `0.7`, nie mogą zostać skonwertowane na ich dwójkowe odpowiedniki bez niewielkiej straty dokładności. Może to powodować pewne problemy: na przykład wyrażenie `floor((0.1+0.7)*10)` zwykle ma wartość `7`, zamiast oczekiwanej `8`, gdyż wewnętrzna reprezentacja tego wartości to liczba `7.9999999999...`.

Powiązane jest to z faktem, że dla pewnych ułamków zwykłych nie istnieje skończone rozwinięcie dziesiętne. Na przykład `1/3` w reprezentacji dziesiętnej ma wartość `0.3333333. . .`.

Dlatego nigdy nie należy wierzyć liczbom zmiennoprzecinkowym do ostatniej cyfry i nigdy nie należy wykonywać operacji porównania na stwierdzenie równości. Do operacji na liczbach zmiennoprzecinkowych o naprawdę dużej precyzji należy użyć biblioteki BCMath lub funkcji gmp.

Poprzedni | Spis treści | Następny
Liczby całkowite (integer) | Początek rozdziału | Łańcuchy znaków (string)