W3docs

doubleval()

Aprende PHP doubleval(), que convierte un valor a float y es un alias exacto de floatval(). Cubre sintaxis, valores de retorno y reglas de análisis de strings.

Introducción

La función doubleval() convierte un valor a float (un número con parte decimal). Es un alias exacto de floatval() — ambas funciones comparten la misma implementación. El nombre existe porque PHP históricamente denominaba "double" al tipo de punto flotante, y en PHP float y double son el mismo tipo.

Se recurre a doubleval() (o floatval()) cuando se tiene un valor de tipo desconocido o mixto — típicamente un string proveniente de un formulario, una cadena de consulta o un archivo — y se necesita un número confiable para realizar operaciones aritméticas.

Sintaxis

doubleval(mixed $value): float

$value es el valor a convertir. Puede ser un string, integer, boolean u otro escalar. La función devuelve el valor float de $value, o 0.0 cuando el valor no puede interpretarse como un número.

Valores de retorno

La forma en que doubleval() trata un valor depende de su tipo:

  • String numérico — se analiza hasta el primer carácter no numérico ("3.14"3.14).
  • Integer / float — se devuelve como float (4242.0 internamente).
  • Booleantrue1.0, false0.0.
  • null0.0.
  • String no numérico0.0.
  • Array1.0 para un array no vacío, 0.0 para uno vacío (con una advertencia). Evita pasar arrays.

Ejemplo básico

php— editable, runs on the server

Observa cómo la salida muestra 42 y 1, no 42.0 y 1.0. Los valores son floats, pero echo imprime un float sin parte fraccionaria sin el .0 final. Para ver el tipo float explícitamente, usa var_dump():

<?php
var_dump(doubleval(42));     // float(42)
var_dump(doubleval(true));   // float(1)
var_dump(doubleval("3.14")); // float(3.14)
?>

Análisis de strings con números al inicio

doubleval() lee la parte numérica inicial de un string y se detiene en el primer carácter que no puede formar parte de un número. Los espacios en blanco al inicio se omiten y se entiende la notación científica.

<?php
echo doubleval("12.5kg") . "\n";   // 12.5  (stops at "k")
echo doubleval("  7.0  ") . "\n";  // 7     (leading spaces ignored)
echo doubleval("1.2e3") . "\n";    // 1200  (scientific notation)
echo doubleval("abc12") . "\n";    // 0     (no leading number)
?>

Esto resulta conveniente para extraer un número de un string con unidades, pero también significa que un valor mal formado se convierte silenciosamente en 0.0 en lugar de lanzar un error — valida primero si esa distinción importa.

doubleval() vs. el cast (float)

Para valores escalares, doubleval($x) y (float) $x producen el mismo resultado, por lo que el cast suele preferirse en el código moderno. doubleval() sigue siendo útil como callback, por ejemplo con array_map():

<?php
$inputs = ["1.5", "2", "3.75kg"];
$floats = array_map('doubleval', $inputs);
print_r($floats);
// Array ( [0] => 1.5 [1] => 2 [2] => 3.75 )
?>

doubleval() vs. floatval()

No existe diferencia funcionaldoubleval() es un alias definido de floatval(). El código moderno debería preferir floatval() porque el nombre es más claro y coincide con el nombre del tipo float usado en todo PHP.

Conclusión

doubleval() convierte cualquier valor escalar a float, analizando la parte numérica inicial de los strings y retornando 0.0 cuando no se encuentra ningún número. Es idéntica a floatval(), que es el nombre preferido actualmente. Para convertir a otros tipos, consulta intval() y settype().

Práctica

Práctica
¿Qué hace la función doubleval() en PHP?
¿Qué hace la función doubleval() en PHP?
Was this page helpful?