Los números de punto flotante (también conocidos como "flotantes", "dobles" o "números reales") pueden ser especificados usando cualquiera de las siguientes sintaxis:
<?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})
Es bastante común que algunas fracciones decimales simples como 0.1 o 0.7 no puedan ser convertidas a su representación binaria interna sin perder un poco de precisión. Esto puede llevar a resultados confusos: por ejemplo, floor((0.1+0.7)*10) usualmente devolverá 7 en lugar del esperado 8 ya que el resultado de la representación interna es en realidad algo como 7.9999999999....
Esto se encuentra relacionado al hecho de que es imposible expresar de forma exacta algunas fracciones en notación decimal con un número finito de dígitos. Por ejemplo, 1/3 en forma decimal se convierte en 0.3333333. . ..
Así que nunca confíe en resultados de números flotantes hasta el último dígito, y nunca compare números de punto flotante para conocer si son equivalentes. Si realmente necesita una mejor precisión, es buena idea que use las funciones matemáticas de precisión arbitraria o las funciones gmp en su lugar.
Para más información sobre cuándo y cómo son convertidas las cadenas a flotantes, vea la sección titulada Conversión de cadenas a números. Para valores de otros tipos, la conversión es la misma que si el valor hubiese sido convertido a entero y luego a flotante. Vea la sección Conversión a entero para más información. A partir de PHP 5, una noticia es generada si intenta convertir un objeto a flotante.