Eu tenho esse código
$vad = 1.1;
print gettype($vad);
var_dump($vad);
isso resultará em:
double
float(1.1)
Então é double ou float no php?
Não há diferença no PHP. float
, double
ou real
são do mesmo tipo de dados.
No nível C, tudo é armazenado como um double
.
O tamanho real ainda depende da plataforma.
Veja o manual para mais detalhes:
http://www.php.net/manual/en/language.types.float.php
function some( float $num){}
, quando eu usosome(17.23)
ela gera um erro fatal, some () deve ser uma instância de float, double given,real
no php até agora.is_real
função, com é um alias deis_float
...; )Para PHP, eles são iguais. http://www.php.net/manual/en/language.types.float.php :
A parte confusa é porque gettype (que você não deveria usar, de qualquer maneira) retorna "double" ao invés de "float". A resposta é http://de2.php.net/manual/en/function.gettype.php :
fonte
A partir do PHP 7.0.6 no Windows, comparando este comando sem xdebug:
e com xdebug:
Observe que isso apenas altera a saída de var_dump (), mas não o gerenciamento de memória real.
Isso pode resolver algumas questões por que você vê em
double
vez defloat
mostrado no var_dump em algumas outras máquinas.Além disso, com ou sem xdebug,
gettype
ainda retornastring(6) "double"
.fonte
No PHP 7.0.14
Retorna "Erro fatal: TypeError não capturado: Argumento 1 passado para test () deve ser uma instância de double, float fornecido".
Imprime 2.2111 na tela.
fonte
float
É apenas uma dica de tipo válida ( consulte ). Quando você digitadouble
, ele é tratado como um nome de classe e o interpretador lança a exceção, porque espera uma variável com instância dadouble
classe