W3docs

is_float()

La funzione is_float() di PHP verifica se una variabile è di tipo float. Scopri sintassi, esempi pratici e differenze rispetto a is_numeric().

Introduzione

is_float() è una funzione PHP integrata che verifica se una variabile contiene un valore in virgola mobile (un numero con parte decimale, come 3.14). Restituisce un boolean, quindi è il modo standard per confermare che un valore è un float prima di eseguire logica riservata ai float.

Un aspetto fondamentale da capire subito: is_float() verifica il tipo della variabile, non il suo valore matematico. L'intero 5 e il float 5.0 sono uguali in valore, ma solo 5.0 è un float. Anche "3.14" (una stringa di cifre) non è un float — anche se visivamente lo sembra.

Questa pagina illustra la sintassi, i casi comuni e le sorprese, le differenze tra is_float() e le funzioni correlate, e quando usarla concretamente.

Sintassi

is_float(mixed $value): bool
ParteSignificato
$valueLa variabile da testare. Accetta qualsiasi tipo.
Valore restituitotrue se $value è di tipo float, altrimenti false.

is_double() è un alias di is_float() — si comportano in modo identico, quindi usa il nome che ti sembra più leggibile.

Esempio di base

php— editable, runs on the server

Quando si usa echo su un boolean, PHP stampa 1 per true e una stringa vuota per false — ecco perché la seconda riga appare vuota. Per ottenere un'etichetta chiara, usa invece var_dump():

<?php
var_dump(is_float(3.14));   // bool(true)
var_dump(is_float(42));     // bool(false)
?>

Cosa conta come float (e cosa no)

Il trabocchetto più comune è che una stringa numerica non è un float. is_float() restituisce true solo per i valori effettivamente memorizzati con il tipo float.

<?php
var_dump(is_float(3.14));      // bool(true)  — float literal
var_dump(is_float(1.5e3));     // bool(true)  — scientific notation = 1500.0
var_dump(is_float(0.0));       // bool(true)  — zero is still a float
var_dump(is_float(10));        // bool(false) — integer, not float
var_dump(is_float("3.14"));    // bool(false) — string, even though it looks like one
var_dump(is_float(3.14 + 1));  // bool(true)  — float arithmetic yields a float
var_dump(is_float(10 / 3));    // bool(true)  — division produces a float
?>

Nota che 10 / 3 è un float anche se entrambi gli operandi sono interi: la divisione in PHP restituisce un float quando il risultato non è un numero intero.

Gestione delle stringhe numeriche

Se il valore potrebbe essere una stringa numerica (ad esempio da $_GET, $_POST o un file CSV), is_float() restituirà false. Usa is_numeric() per rilevare le stringhe numeriche, oppure esegui prima un cast:

<?php
$input = "9.99";  // e.g. a price submitted from a form

var_dump(is_float($input));            // bool(false) — it's a string
var_dump(is_numeric($input));          // bool(true)  — looks like a number
var_dump(is_float((float) $input));    // bool(true)  — cast it first
?>

Per una copertura completa sul rilevamento degli input numerici, vedi is_numeric() e PHP Data Types.

Un controllo pratico

Un utilizzo comune è la validazione di un valore prima di eseguire operazioni matematiche che hanno senso solo su un float:

<?php
function applyDiscount(mixed $price, float $rate): float
{
    if (!is_float($price)) {
        // normalize numeric strings/ints into a float
        $price = (float) $price;
    }
    return $price - ($price * $rate);
}

echo applyDiscount(49.99, 0.10) . "\n";  // 44.991
echo applyDiscount("20", 0.25) . "\n";   // 15
?>

Funzioni correlate per la verifica dei tipi

FunzioneRestituisce true quando il valore è…
is_float() / is_double()un float (3.14, 1.5e3)
is_int()un intero (42)
is_string()una stringa ("3.14")
is_numeric()un numero o una stringa numerica
is_bool()un boolean (true/false)

Se hai solo bisogno di sapere "è un qualsiasi tipo di numero, inclusa la versione stringa", usa is_numeric(). Se hai specificamente bisogno del tipo float, usa is_float().

Conclusione

is_float() (e il suo alias is_double()) verifica se il tipo di una variabile è float, restituendo un boolean. Ricorda che verifica il tipo, non il valore: interi e stringhe numeriche restituiscono entrambi false, anche quando rappresentano numeri con parte decimale. Quando lavori con input dell'utente — che arriva come stringa — abbinala a is_numeric() oppure esegui un cast con (float) prima di trattare un valore come float.

Pratica

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