|
użytkowników online: 124
|
OPINIE UŻYTKOWNIKÓW
|
W takich dniach, jak ten, nie żałuję, że wykupiłem abonament. Korzystam z porad na tych stronach nawet kilkanaście razy w tygodniu i dzięki nim prace nad stronami dla klientów idą mi o wiele szybciej, a strony wyglądają bardziej profesjonalnie. Nie wiem, jak mogłem wcześniej pracować bez dostępu do porad w tym serwisie!
Wojciech Miszkiewicz
|
|
PODRĘCZNIK PHP 5.x, 4.x, 3.x - częściowo spolszczony / źródło: www.php.net
[Spis]
[A]
[B]
[C]
[D]
[E]
[F]
[G]
[H]
[I]
[J]
[K]
[L]
[M]
[N]
[O]
[P]
[Q]
[R]
[S]
[T]
[U]
[V]
[X]
[W]
[Z]
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.
|
User Contributed Notesjustin at jennnixon dot com
22-Nov-2005 01:00
I was playing around with a benchmark script:
<?php
$st = array_sum (explode (' ', microtime ()));
ob_start ();
for ($i = 1; $i < 10000; $i++) {
echo "<!-- Hello, World! " . ($i % round(sqrt($i*2))) ^ $i . " -->\n";
}
ob_end_flush ();
echo round ((array_sum (explode (' ',microtime ())) - $st), 5) . "\n";
?>
Be careful with numbers, they can print out inpredictable things. (For example, this printed out [uncommented])...
ᤊ
|