is_double()
is_double() era um alias descontinuado de is_float() no PHP. Verifica se uma variável é do tipo float. Removida no PHP 8.0.0.
Introdução
is_double() era um alias de is_float() que verifica se uma variável contém um número de ponto flutuante. Um float (também chamado de double) é o tipo de dado que o PHP usa para números com parte fracionária, como 3.14 ou 1.0e6.
Importante:
is_double()foi descontinuada há muito tempo e removida no PHP 8.0.0. Em qualquer versão do PHP, prefirais_float()— ela é idêntica em comportamento, suportada e mais clara de ler. Esta página documentais_double()para que você possa reconhecer e migrar código legado que ainda a utiliza.
Este capítulo aborda a sintaxe, o que conta como float, como o valor de retorno se comporta, a substituição recomendada e as armadilhas comuns.
Sintaxe
is_double(mixed $value): boolAceita um parâmetro, $value, a variável a ser testada, e retorna true se $value for do tipo float, ou false caso contrário. A verificação é sobre o tipo, não sobre se o número parece decimal — veja as armadilhas abaixo.
O que conta como float
is_double() (e is_float()) retorna true somente quando o tipo de tempo de execução da variável é float. Strings numéricas e inteiros de número inteiro não são floats:
<?php
var_dump(is_float(3.14)); // bool(true)
var_dump(is_float(1.0e6)); // bool(true) — scientific notation is a float
var_dump(is_float(42)); // bool(false) — this is an int
var_dump(is_float("3.14")); // bool(false) — this is a string
var_dump(is_float(10 / 2)); // bool(true) — division always yields a float in PHP
?>Observe que 10 / 2 resulta em true: no PHP, o operador / sempre produz um float, mesmo quando o resultado é matematicamente um número inteiro.
Exemplo de Uso
Como exibir booleanos com echo é enganoso (true imprime 1, false não imprime nada), use var_dump() para ver o resultado real:
$price é um float genuíno, portanto a verificação é true. $count é um inteiro e $label é uma string, portanto ambos são false.
A substituição moderna: is_float()
Substituir is_double() é simplesmente renomear — os argumentos e o valor de retorno são os mesmos:
<?php
// Legacy (removed in PHP 8.0)
// if (is_double($value)) { ... }
// Modern, supported everywhere
$value = 9.99;
if (is_float($value)) {
echo "It's a float";
}
?>Se você precisar aceitar números que podem ser float, inteiro ou string numérica (por exemplo, entrada de formulário), use is_numeric() em vez disso, ou converta com floatval().
Armadilhas comuns
- Strings numéricas não passam na verificação.
is_float("3.14")éfalse. Entradas do usuário vindas de formulários ou$_GETchegam como strings; valide comis_numeric()primeiro, depois converta comfloatval(). - Não compare floats por igualdade exata. Por causa do arredondamento binário,
0.1 + 0.2 == 0.3éfalse. Compare dentro de uma pequena tolerância. is_doubleestá morta no PHP 8+. Chamá-la no PHP 8.0 ou posterior gera umErrorfatal:Call to undefined function is_double().
Veja também
is_float()— a função atual e suportada.is_int()— testa inteiros.is_numeric()— testa números ou strings numéricas.floatval()— converte um valor para float.gettype()— inspeciona o tipo de uma variável diretamente.
Conclusão
is_double() é um alias removido de is_float(). Para código novo, sempre use is_float() para testar se um valor é um número de ponto flutuante, e mantenha is_double() em mente apenas para atualizar projetos legados quando migrá-los para PHP 8 ou posterior.