Respostas:
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 uso some(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 de is_float
...; )
Para PHP, eles são iguais. http://www.php.net/manual/en/language.types.float.php :
Números de ponto flutuante (também conhecidos como "flutuantes", "duplos" ou "números reais") podem ser especificados usando qualquer uma das seguintes sintaxes: [...]
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 :
"double" (por razões históricas, "double" é retornado no caso de um float, e não simplesmente "float")
A partir do PHP 7.0.6 no Windows, comparando este comando sem xdebug:
$ php -r 'var_dump(28.4);'
float(28.4)
e com xdebug:
$ php -r 'var_dump(28.4);'
Command line code:1:
double(28.4)
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 de float
mostrado no var_dump em algumas outras máquinas.
Além disso, com ou sem xdebug, gettype
ainda retorna string(6) "double"
.
No PHP 7.0.14
function test(double $a) {
var_dump($a);
}
test(2.2111);
Retorna "Erro fatal: TypeError não capturado: Argumento 1 passado para test () deve ser uma instância de double, float fornecido".
function test(float $a) {
var_dump($a);
}
test(2.2111);
Imprime 2.2111 na tela.