tengo este código¿Diferencia entre float y double en php?
$vad = 1.1;
print gettype($vad);
var_dump($vad);
esta es la salida:
double
float(1.1)
Por lo tanto, es el doble o flotar en php?
tengo este código¿Diferencia entre float y double en php?
$vad = 1.1;
print gettype($vad);
var_dump($vad);
esta es la salida:
double
float(1.1)
Por lo tanto, es el doble o flotar en php?
No hay diferencia en PHP. float
, double
o real
son del mismo tipo de datos.
En el nivel C, todo se almacena como double
.
El tamaño real sigue dependiendo de la plataforma.
Consulte el manual para más detalles:
http://www.php.net/manual/en/language.types.float.php
Para PHP, que son los mismos. 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 es la razón por gettype (que no se debe utilizar, de todos modos) devuelve "doble" en lugar de "flotar". La respuesta es 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")
A partir de PHP 7.0.6 en Windows, comparando este comando sin Xdebug:
$ php -r 'var_dump(28.4);'
float(28.4)
y con Xdebug:
$ php -r 'var_dump(28.4);'
Command line code:1:
double(28.4)
Nota que esto solo cambia la salida de var_dump(), pero no la gestión de memoria real.
Esto puede resolver algunas inquietudes sobre por qué ve double
en lugar de float
que se muestra en var_dump en algunas otras máquinas.
Además, con o sin xdebug, gettype
todavía devuelve string(6) "double"
.
¡Muy interesante! Gracias por señalar esto. –
En PHP 7.0.14
function test(double $a) {
var_dump($a);
}
test(2.2111);
Devuelve "error fatal: TypeError no detectada: Argumento 1 pasó a test() debe ser una instancia de doble, flotador dado".
function test(float $a) {
var_dump($a);
}
test(2.2111);
Imprime 2.2111 en la pantalla.
seguro de eso? ¿Hay algún uso de memoria diferente al respecto? – TheCrazyProfessor
Tengo la función 'function alguna (float $ num) {}', cuando uso 'some (17.23)' throws ** error fatal ** some() debe ser una instancia de float, double given, – NaveenDA
@NaveenDA What versión de PHP? Antes de PHP 7.0, las sugerencias de tipo escalar no estaban disponibles y, en su lugar, se interpretarían como nombres de clase. Eso parece lo que está pasando allí. –