Antworten:
Es gibt keinen Unterschied in PHP. float, doubleOder realsind der gleiche Datentyp.
Auf der C-Ebene wird alles als gespeichert double.
Die tatsächliche Größe ist weiterhin plattformabhängig.
Weitere Informationen finden Sie im Handbuch:
http://www.php.net/manual/en/language.types.float.php
function some( float $num){}, wenn ich es benutze some(17.23), wirft es einen schwerwiegenden Fehler. Some () muss eine Instanz von float sein, doppelt angegeben,
realin PHP bisher keinen solchen Datentyp gibt .
is_realFunktion, mit der ein Alias von is_float...; )
Für PHP sind sie gleich. http://www.php.net/manual/en/language.types.float.php :
Gleitkommazahlen (auch als "Floats", "Doubles" oder "Real Numbers" bezeichnet) können mit einer der folgenden Syntaxen angegeben werden: [...]
Der verwirrende Teil ist, warum gettype (das Sie sowieso nicht verwenden sollten) "double" anstelle von "float" zurückgibt. Die Antwort lautet http://de2.php.net/manual/en/function.gettype.php :
"double" (aus historischen Gründen wird "double" im Falle eines Floats zurückgegeben und nicht einfach "float")
Ab PHP 7.0.6 unter Windows wird dieser Befehl ohne xdebug verglichen:
$ php -r 'var_dump(28.4);'
float(28.4)
und mit xdebug:
$ php -r 'var_dump(28.4);'
Command line code:1:
double(28.4)
Beachten Sie, dass dies nur die Ausgabe von var_dump () ändert, nicht jedoch die eigentliche Speicherverwaltung.
Dies kann einige Probleme beheben, die auf einigen anderen Computern angezeigt werden, doubleanstatt floatin var_dump angezeigt zu werden.
Auch mit oder ohne xdebug wird gettypeweiterhin zurückgegeben string(6) "double".
In PHP 7.0.14
function test(double $a) {
var_dump($a);
}
test(2.2111);
Rückgabe "Schwerwiegender Fehler: Nicht erfasster TypeError: Argument 1, das an test () übergeben wurde, muss eine Instanz von double sein, float angegeben".
function test(float $a) {
var_dump($a);
}
test(2.2111);
Druckt 2.2111 auf dem Bildschirm.