W3docs

doubleval()

Scopri doubleval() in PHP: converte un valore in float, alias esatto di floatval(). Sintassi, valori restituiti e regole di parsing delle stringhe.

Introduzione

La funzione doubleval() converte un valore in un float (un numero con parte decimale). È un alias esatto di floatval() — entrambe le funzioni condividono la stessa implementazione. Il nome esiste perché PHP storicamente chiamava il tipo in virgola mobile "double", e in PHP float e double sono lo stesso tipo.

Si ricorre a doubleval() (o floatval()) ogni volta che si dispone di un valore di tipo sconosciuto o misto — tipicamente una string proveniente da un form, da una query string o da un file — e si ha bisogno di un numero affidabile su cui eseguire operazioni aritmetiche.

Sintassi

doubleval(mixed $value): float

$value è il valore da convertire. Può essere una string, un intero, un boolean o un altro scalare. La funzione restituisce il valore float di $value, oppure 0.0 quando il valore non può essere interpretato come numero.

Valori restituiti

Il modo in cui doubleval() tratta un valore dipende dal suo tipo:

  • String numerica — analizzata fino al primo carattere non numerico ("3.14"3.14).
  • Intero / float — restituito come float (4242.0 internamente).
  • Booleantrue1.0, false0.0.
  • null0.0.
  • String non numerica0.0.
  • Array1.0 per un array non vuoto, 0.0 per uno vuoto (con un avviso). Evitare di passare array.

Esempio di base

php— editable, runs on the server

Si noti come l'output mostri 42 e 1, non 42.0 e 1.0. I valori sono float, ma echo stampa un float senza parte frazionaria senza il .0 finale. Per vedere esplicitamente il tipo float, usare var_dump():

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

Parsing di stringhe con numeri iniziali

doubleval() legge la parte numerica iniziale di una string e si ferma al primo carattere che non può fare parte di un numero. Gli spazi iniziali vengono ignorati e la notazione scientifica è supportata.

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

Ciò lo rende comodo per estrarre un numero da una string con unità di misura, ma significa anche che un valore malformato diventa silenziosamente 0.0 invece di generare un errore — validare prima se questa distinzione è importante.

doubleval() vs. cast (float)

Per i valori scalari, doubleval($x) e (float) $x producono lo stesso risultato, quindi il cast è generalmente preferito nel codice moderno. doubleval() è ancora utile come callback, ad esempio 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()

Non c'è alcuna differenza funzionaledoubleval() è un alias definito di floatval(). Il codice moderno dovrebbe preferire floatval() perché il nome è più chiaro e corrisponde al nome del tipo float usato ovunque in PHP.

Conclusione

doubleval() converte qualsiasi valore scalare in un float, analizzando la parte numerica iniziale delle stringhe e tornando a 0.0 quando non viene trovato alcun numero. È identica a floatval(), che è il nome preferito oggi. Per la conversione ad altri tipi, vedere intval() e settype().

Esercizi

Pratica
Cosa fa la funzione doubleval() in PHP?
Cosa fa la funzione doubleval() in PHP?
Was this page helpful?