Ho questo codiceDifferenza tra float e double in php?
$vad = 1.1;
print gettype($vad);
var_dump($vad);
questa uscita volontà:
double
float(1.1)
Quindi è doppio o galleggiare in php?
Ho questo codiceDifferenza tra float e double in php?
$vad = 1.1;
print gettype($vad);
var_dump($vad);
questa uscita volontà:
double
float(1.1)
Quindi è doppio o galleggiare in php?
Non c'è differenza in PHP. float
, double
o real
sono lo stesso tipo di dati.
Al livello C, tutto è memorizzato come double
.
La dimensione reale dipende ancora dalla piattaforma.
consultare il manuale per maggiori dettagli:
http://www.php.net/manual/en/language.types.float.php
Per PHP, sono la stessa cosa. http://www.php.net/manual/en/language.types.float.php:
Floating point numbers (also known as "floats", "doubles", or "real numbers") can be specified using any of the following syntaxes: [...]
La parte confusa è il motivo per gettype (che non si dovrebbe usare, in ogni caso) restituisce "doppio" al posto di "galleggiare". La risposta è http://de2.php.net/manual/en/function.gettype.php:
" double " (for historical reasons "double" is returned in case of a float , and not simply "float")
Dal 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 modifica solo l'output var_dump(), ma non l'effettiva gestione della memoria.
Questo potrebbe risolvere alcuni dubbi sul perché si veda double
anziché float
mostrato in var_dump in alcune altre macchine.
Inoltre, con o senza xdebug, gettype
restituisce ancora string(6) "double"
.
Molto interessante! Grazie per averlo indicato. –
In PHP 7.0.14
function test(double $a) {
var_dump($a);
}
test(2.2111);
Restituisce "errore irreversibile: TypeError Uncaught: Argomento 1 sottoposte alla prova() deve essere un'istanza di double, float dato".
function test(float $a) {
var_dump($a);
}
test(2.2111);
Stampa 2.2111 sullo schermo.
sicuro a tale proposito? c'è qualche uso della memoria diffrente a riguardo? – TheCrazyProfessor
Ho funzione 'function some (float $ num) {}', quando uso 'some (17.23)' genera ** errore fatale ** some() deve essere un'istanza di float, double data, – NaveenDA
@NaveenDA What versione di PHP? Prima di PHP 7.0, gli hint del tipo scalare non erano disponibili e sarebbero interpretati come nomi di classi. Sembra quello che sta succedendo lì. –