W3docs

is_float()

A função is_float() é uma função nativa do PHP que verifica se uma variável é do tipo float ou não. Um float representa um número decimal.

Introdução

is_float() é uma função nativa do PHP que verifica se uma variável contém um valor de ponto flutuante (um número com parte decimal, como 3.14). Ela retorna um boolean, sendo a forma padrão de confirmar que um valor é float antes de executar lógica exclusiva para floats.

Um ponto importante a entender de antemão: is_float() testa o tipo da variável, não o seu valor matemático. O inteiro 5 e o float 5.0 são iguais em valor, mas apenas 5.0 é um float. "3.14" (uma string de dígitos) também não é um float — mesmo parecendo um.

Esta página aborda a sintaxe, os casos comuns e as surpresas, como is_float() difere de funções relacionadas, e quando você realmente precisaria utilizá-la.

Sintaxe

is_float(mixed $value): bool
ParteSignificado
$valueA variável a ser testada. Qualquer tipo é aceito.
Valor de retornotrue se $value for do tipo float, caso contrário false.

is_double() é um alias de is_float() — elas se comportam de forma idêntica, então use o nome que for mais legível para você.

Exemplo básico

php— editable, runs on the server

Ao usar echo em um boolean, o PHP imprime 1 para true e uma string vazia para false — por isso a segunda linha aparece em branco. Para ver um rótulo claro, use var_dump() em vez disso:

<?php
var_dump(is_float(3.14));   // bool(true)
var_dump(is_float(42));     // bool(false)
?>

O que conta como float (e o que não conta)

O maior problema é que uma string numérica não é um float. is_float() retorna true apenas para valores que estão realmente armazenados com o tipo float.

<?php
var_dump(is_float(3.14));      // bool(true)  — float literal
var_dump(is_float(1.5e3));     // bool(true)  — scientific notation = 1500.0
var_dump(is_float(0.0));       // bool(true)  — zero is still a float
var_dump(is_float(10));        // bool(false) — integer, not float
var_dump(is_float("3.14"));    // bool(false) — string, even though it looks like one
var_dump(is_float(3.14 + 1));  // bool(true)  — float arithmetic yields a float
var_dump(is_float(10 / 3));    // bool(true)  — division produces a float
?>

Note que 10 / 3 é um float mesmo que ambos os operandos sejam inteiros: a divisão no PHP retorna um float sempre que o resultado não for um número inteiro.

Lidando com strings numéricas

Se o seu valor pode ser uma string numérica (por exemplo, de $_GET, $_POST ou um arquivo CSV), is_float() retornará false. Use is_numeric() para detectar strings numéricas, ou faça o cast primeiro:

<?php
$input = "9.99";  // e.g. a price submitted from a form

var_dump(is_float($input));            // bool(false) — it's a string
var_dump(is_numeric($input));          // bool(true)  — looks like a number
var_dump(is_float((float) $input));    // bool(true)  — cast it first
?>

Para uma cobertura completa sobre detecção de entrada numérica, veja is_numeric() e PHP Data Types.

Um guard prático

Um uso comum é validar um valor antes de fazer cálculos que só fazem sentido em um float:

<?php
function applyDiscount(mixed $price, float $rate): float
{
    if (!is_float($price)) {
        // normalize numeric strings/ints into a float
        $price = (float) $price;
    }
    return $price - ($price * $rate);
}

echo applyDiscount(49.99, 0.10) . "\n";  // 44.991
echo applyDiscount("20", 0.25) . "\n";   // 15
?>

Funções relacionadas de verificação de tipo

FunçãoRetorna true quando o valor é…
is_float() / is_double()um float (3.14, 1.5e3)
is_int()um inteiro (42)
is_string()uma string ("3.14")
is_numeric()um número ou uma string numérica
is_bool()um boolean (true/false)

Se você precisar apenas de "é algum tipo de número, incluindo uma versão em string," use is_numeric(). Se você precisar especificamente do tipo float, use is_float().

Conclusão

is_float() (e seu alias is_double()) verifica se o tipo de uma variável é float, retornando um boolean. Lembre-se de que ela testa o tipo, não o valor: inteiros e strings numéricas retornam false, mesmo quando representam números com aspecto decimal. Ao trabalhar com entrada do usuário — que chega como strings — combine com is_numeric() ou faça cast com (float) antes de tratar um valor como float.

Prática

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