Ho questo codice
$vad = 1.1;
print gettype($vad);
var_dump($vad);
questo produrrà:
double
float(1.1)
Quindi è double o float in php?
Ho questo codice
$vad = 1.1;
print gettype($vad);
var_dump($vad);
questo produrrà:
double
float(1.1)
Quindi è double o float in php?
Risposte:
Non c'è differenza in PHP. float
, double
O real
sono gli stessi tipo di dati.
A livello C, tutto viene memorizzato come file double
.
La dimensione reale dipende ancora dalla piattaforma.
Vedere il manuale per maggiori dettagli:
http://www.php.net/manual/en/language.types.float.php
function some( float $num){}
, quando la uso some(17.23)
genera un errore fatale, alcuni () devono essere un'istanza di float, doppia data,
real
di dati in php finora.
is_real
funzione, con è un alias di is_float
...; )
Per PHP, sono gli stessi. http://www.php.net/manual/en/language.types.float.php :
I numeri in virgola mobile (noti anche come "float", "doppi" o "numeri reali") possono essere specificati utilizzando una qualsiasi delle seguenti sintassi: [...]
La parte che crea confusione è il motivo per cui gettype (che comunque non dovresti usare) restituisce "double" invece di "float". La risposta è http://de2.php.net/manual/en/function.gettype.php :
"double" (per ragioni storiche "double" viene restituito in caso di float, e non semplicemente "float")
A partire da PHP 7.0.6 su Windows, confrontando questo comando senza xdebug:
$ php -r 'var_dump(28.4);'
float(28.4)
e con xdebug:
$ php -r 'var_dump(28.4);'
Command line code:1:
double(28.4)
Nota che questo cambia solo l'output di var_dump (), ma non l'effettiva gestione della memoria.
Questo potrebbe risolvere alcune preoccupazioni sul motivo per cui vedi double
invece di essere float
mostrato in var_dump su altre macchine.
Inoltre, con o senza xdebug, gettype
restituisce ancora string(6) "double"
.
In PHP 7.0.14
function test(double $a) {
var_dump($a);
}
test(2.2111);
Restituisce "Errore irreversibile: TypeError non rilevato: l'argomento 1 passato a test () deve essere un'istanza di double, float fornito".
function test(float $a) {
var_dump($a);
}
test(2.2111);
Stampa 2.2111 sullo schermo.