Lebegőpontos számok
A lebegőpontos számok ("float", "valós szám") az alábbi szintaxisok bármelyikével hozhatóak létre:
<?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})
Lebegőpontos számok pontossága
Elég gyakran előfordul, hogy egyszerű decimális törtek, mint a 0.1 és a 0.7 nem konvertálhatóak pontosan bináris megfelelőikre kis veszteség nélkül. Ez zavaró eredményekhez vezethet, például floor((0.1+0.7)*10) tipikusan 7 értékkel tér vissza, az elvárt 8 helyett, a belső ábrázolás miatt, ami valójában 7.9999999999....
Ez azzal a ténnyel van kapcsolatban, hogy lehetetlen megjelenÃteni néhány törtet véges számú decimálisan számjeggyel. Például 1/3 decimálisan 0.3333333. . . értékké válik.
Ezért soha ne bÃzz meg a törtszámok eredményeiben az utolsó jegyig, és soha se hasonÃts össze két lebegÅ‘pontos számot pontos egyenlÅ‘ségre. Ha nagyobb pontosságú számokra van szükséges, használd a tetszÅ‘leges pontosságú matematikai függvényeket vagy a gmp függvényeket.
Konverzió float-ra
A stringek float-ra történÅ‘ konvertálásáról a Stringek átalakÃtása számmá cÃmű részben találsz információt. Más tÃpusú értékek esetén a konverzió pontosan úgy történik, mintha elÅ‘bb integer-ré konvertálódna, majd az eredmény float-ra. További információért lásd még a Egész értékké alakÃtás cÃmű részt. A PHP 5-ös verziójától ha objektumot float-tá alakÃtasz, figyelmeztetés (notice) szintű hibajelzés keletkezik.