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.

Hosting by: Hurra Communications Sp. z o.o.
Generated: 2007-01-26 18:02:57