Podręcznik PHP
Poprzedni
Rozdział 7.
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;
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)