is_double()
La función is_double() es un alias obsoleto de is_float() en PHP. Comprueba si una variable es de tipo float. Aprende su uso y cómo migrar código legado.
Introducción
is_double() era un alias de is_float() que comprueba si una variable contiene un número de punto flotante. Un float (también llamado double) es el tipo de dato que PHP utiliza para números con parte fraccionaria, como 3.14 o 1.0e6.
Importante:
is_double()fue obsoleto hace mucho tiempo y eliminado en PHP 8.0.0. En cualquier versión de PHP, utilizais_float()— es idéntica en comportamiento, está soportada y es más clara de leer. Esta página documentais_double()para que puedas reconocer y migrar código legado que aún la utilice.
Este capítulo cubre la sintaxis, qué se considera un float, cómo se comporta el valor de retorno, el reemplazo recomendado y los errores comunes.
Sintaxis
is_double(mixed $value): boolRecibe un parámetro, $value, la variable a comprobar, y devuelve true si $value es de tipo float, false en caso contrario. La comprobación es sobre el tipo, no sobre si el número parece decimal — consulta los errores comunes más abajo.
Qué se considera un float
is_double() (e is_float()) devuelve true únicamente cuando el tipo en tiempo de ejecución de la variable es float. Las cadenas numéricas y los enteros sin parte decimal no son floats:
<?php
var_dump(is_float(3.14)); // bool(true)
var_dump(is_float(1.0e6)); // bool(true) — scientific notation is a float
var_dump(is_float(42)); // bool(false) — this is an int
var_dump(is_float("3.14")); // bool(false) — this is a string
var_dump(is_float(10 / 2)); // bool(true) — division always yields a float in PHP
?>Observa que 10 / 2 es true: en PHP, el operador / siempre produce un float, incluso cuando el resultado es matemáticamente un número entero.
Ejemplo de uso
Como mostrar booleanos con echo puede resultar confuso (true imprime 1, false no imprime nada), utiliza var_dump() para ver el resultado real:
$price es un float auténtico, por lo que la comprobación es true. $count es un entero y $label es una cadena, así que ambos son false.
El reemplazo moderno: is_float()
Reemplazar is_double() es simplemente cambiar el nombre — los argumentos y el valor de retorno son los mismos:
<?php
// Legacy (removed in PHP 8.0)
// if (is_double($value)) { ... }
// Modern, supported everywhere
$value = 9.99;
if (is_float($value)) {
echo "It's a float";
}
?>Si necesitas aceptar números que podrían ser un float, un entero o una cadena numérica (por ejemplo, datos de un formulario), usa is_numeric() en su lugar, o convierte con floatval().
Errores comunes
- Las cadenas numéricas no superan la comprobación.
is_float("3.14")esfalse. La entrada del usuario proveniente de formularios o$_GETllega como cadena; valida primero conis_numeric()y luego convierte confloatval(). - No compares floats por igualdad exacta. Debido al redondeo binario,
0.1 + 0.2 == 0.3esfalse. Compara dentro de una pequeña tolerancia en su lugar. is_doubleno existe en PHP 8+. Llamarla en PHP 8.0 o posterior genera unErrorfatal:Call to undefined function is_double().
Ver también
is_float()— la función actual y soportada.is_int()— comprobar si es entero.is_numeric()— comprobar si es un número o una cadena numérica.floatval()— convertir un valor a float.gettype()— inspeccionar directamente el tipo de una variable.
Conclusión
is_double() es un alias eliminado de is_float(). Para código nuevo, utiliza siempre is_float() para comprobar si un valor es un número de punto flotante, y recuerda is_double() únicamente para actualizar proyectos legados cuando los migres a PHP 8 o posterior.