Типове
PHP Manual

Числа с плаваща запетая

Числата с плаваща запетая (също познати като "плаващи", "двойни" или "реални числа") могат да бъдат дефинирани посредством кой да е от следните синтаксиси:

<?php
$a 
1.234
$b 1.2e3
$c 7E-10;
?>

Формално:

LNUM          [0-9]+
DNUM          ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
EXPONENT_DNUM ( ({LNUM} | {DNUM}) [eE][+-]? {LNUM})

Размерът на плаващите числа е платформено-зависим, макар че обикновено максималната стойност е около ~1.8e308, с 14-цифрена точност (64-битов IEEE формат).

Предупреждение

Плаваща точност

В много случаи, прости десетични дроби като 0.1 или 0.7 не могат да бъдат превърнати във вътрешните им двоични еквиваленти без да претърпят малка загуба в точността. Това може да доведе до объркващи резултати: например floor((0.1+0.7)*10) в повечето случаи ще върне 7, вместо очакваното 8, тъй като вътрешното представяне в действителност е нещо подобно на 7.9999999999....

Това е свързано с факта, че някои дроби не могат да бъдат представени в десетичен вид с краен брой цифри. Например 1/3 в десетичен вид става 0.3333333. . ..

Така че, никога не се доверявайте на последните цифри в резултати от плаващи числа и никога не сравнявайте числа с плаваща запетая за равенство. Ако наистина се нуждаете от по-висока точност, трябва да използвате математическите функции за произволна точност или пък функциите gmp.

Преобразуване в плаващ

За информация кога и как низовете биват преобразувани в плаващи, вижте раздела, озаглавен Превръщане на низ в число. За стойности от други типове, преобразуването е същото, както ако стойността първо е била превърната в цяло число и после в плаващо. Вижте раздел Преобразуване в цяло число за повече информация. След PHP 5, ще бъде хвърлено съобщение (notice) ако опитате да превърнете обект в плаващо число.


Типове
PHP Manual