W3docs

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, utiliza is_float() — es idéntica en comportamiento, está soportada y es más clara de leer. Esta página documenta is_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): bool

Recibe 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:

php— editable, runs on the server

$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") es false. La entrada del usuario proveniente de formularios o $_GET llega como cadena; valida primero con is_numeric() y luego convierte con floatval().
  • No compares floats por igualdad exacta. Debido al redondeo binario, 0.1 + 0.2 == 0.3 es false. Compara dentro de una pequeña tolerancia en su lugar.
  • is_double no existe en PHP 8+. Llamarla en PHP 8.0 o posterior genera un Error fatal: 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.

Práctica

Práctica
¿Cuál es la función de 'is_double' en PHP?
¿Cuál es la función de 'is_double' en PHP?
Was this page helpful?