W3docs

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, prefira is_float() — ela é idêntica em comportamento, suportada e mais clara de ler. Esta página documenta is_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): bool

Aceita 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:

php— editable, runs on the server

$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 $_GET chegam como strings; valide com is_numeric() primeiro, depois converta com floatval().
  • 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_double está morta no PHP 8+. Chamá-la no PHP 8.0 ou posterior gera um Error fatal: Call to undefined function is_double().

Veja também

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.

Prática

Prática
Qual é a função de 'is_double' no PHP?
Qual é a função de 'is_double' no PHP?
Was this page helpful?