W3docs

is_double()

La funzione is_double() è un alias deprecato di is_float() in PHP. Verifica se una variabile è un float. Scopri la sintassi e i casi d'uso.

Introduzione

is_double() era un alias di is_float() che verifica se una variabile contiene un numero in virgola mobile. Un float (detto anche double) è il tipo di dato che PHP usa per i numeri con parte frazionaria, come 3.14 o 1.0e6.

Importante: is_double() è stato deprecato da tempo e rimosso in PHP 8.0.0. In qualsiasi versione di PHP, è preferibile usare is_float() — il comportamento è identico, è supportato e risulta più chiaro da leggere. Questa pagina documenta is_double() in modo che tu possa riconoscerlo e aggiornare il codice legacy che lo utilizza ancora.

Questo capitolo tratta la sintassi, cosa viene considerato un float, il comportamento del valore restituito, il sostituto consigliato e i problemi più comuni.

Sintassi

is_double(mixed $value): bool

Accetta un solo parametro, $value, la variabile da testare, e restituisce true se $value è di tipo float, false altrimenti. Il controllo riguarda il tipo, non se il numero appare decimale — vedi i problemi comuni qui sotto.

Cosa viene considerato un float

is_double() (e is_float()) restituisce true solo quando il tipo runtime della variabile è float. Le stringhe numeriche e i numeri interi non sono float:

<?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
?>

Nota che 10 / 2 è true: in PHP, l'operatore / produce sempre un float, anche quando il risultato è matematicamente un numero intero.

Esempio di utilizzo

Poiché il print di valori boolean è fuorviante (true stampa 1, false non stampa nulla), usa var_dump() per vedere il risultato reale:

php— editable, runs on the server

$price è un float genuino, quindi il controllo è true. $count è un intero e $label è una stringa, quindi entrambi sono false.

Il sostituto moderno: is_float()

Sostituire is_double() è semplicemente una rinomina — gli argomenti e il valore restituito sono gli stessi:

<?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";
}
?>

Se hai bisogno di accettare numeri che potrebbero essere un float, un intero o una stringa numerica (ad esempio, input da form), usa is_numeric() oppure converti con floatval().

Problemi comuni

  • Le stringhe numeriche non superano il controllo. is_float("3.14") è false. L'input degli utenti dai form o da $_GET arriva come stringa; convalida prima con is_numeric(), poi esegui il cast con floatval().
  • Non confrontare i float per uguaglianza esatta. A causa dell'arrotondamento binario, 0.1 + 0.2 == 0.3 è false. Confronta invece con una piccola tolleranza.
  • is_double non esiste più in PHP 8+. Chiamarlo su PHP 8.0 o versioni successive genera un Error fatale: Call to undefined function is_double().

Vedi anche

  • is_float() — la funzione attuale e supportata.
  • is_int() — verifica i valori interi.
  • is_numeric() — verifica numeri o stringhe numeriche.
  • floatval() — converte un valore in float.
  • gettype() — ispeziona direttamente il tipo di una variabile.

Conclusione

is_double() è un alias rimosso di is_float(). Per il nuovo codice, usa sempre is_float() per verificare se un valore è un numero in virgola mobile, e tieni presente is_double() solo per aggiornare i progetti legacy quando li migri a PHP 8 o versioni successive.

Pratica

Pratica
Qual è la funzione di 'is_double' in PHP?
Qual è la funzione di 'is_double' in PHP?
Was this page helpful?