W3docs

doubleval()

Aprenda a usar doubleval() em PHP, que converte um valor para float e é um alias exato de floatval(). Cobre sintaxe, valores de retorno e regras de parsing de strings.

Introdução

A função doubleval() converte um valor para float (um número com parte decimal). Ela é um alias exato de floatval() — ambas as funções compartilham a mesma implementação. O nome existe porque o PHP historicamente chamava o tipo de ponto flutuante de "double", e em PHP float e double são o mesmo tipo.

Você usa doubleval() (ou floatval()) sempre que tem um valor de tipo desconhecido ou misto — normalmente uma string de entrada de formulário, uma query string ou um arquivo — e precisa de um número confiável para fazer cálculos.

Sintaxe

doubleval(mixed $value): float

$value é o valor a ser convertido. Pode ser uma string, integer, boolean ou outro escalar. A função retorna o valor float de $value, ou 0.0 quando o valor não pode ser interpretado como número.

Valores de retorno

Como doubleval() trata um valor depende do seu tipo:

  • string numérica — analisada até o primeiro caractere não numérico ("3.14"3.14).
  • Integer / float — retornado como float (4242.0 internamente).
  • Booleantrue1.0, false0.0.
  • null0.0.
  • string não numérica0.0.
  • Array1.0 para um array não vazio, 0.0 para um vazio (com um aviso). Evite passar arrays.

Exemplo básico

php— editable, runs on the server

Observe como a saída exibe 42 e 1, e não 42.0 e 1.0. Os valores são floats, mas echo imprime um float sem parte fracionária sem o .0 final. Para ver o tipo float explicitamente, use var_dump():

<?php
var_dump(doubleval(42));     // float(42)
var_dump(doubleval(true));   // float(1)
var_dump(doubleval("3.14")); // float(3.14)
?>

Parsing de strings com números iniciais

doubleval() lê a parte numérica inicial de uma string e para no primeiro caractere que não pode fazer parte de um número. Espaços em branco no início são ignorados, e a notação científica é reconhecida.

<?php
echo doubleval("12.5kg") . "\n";   // 12.5  (stops at "k")
echo doubleval("  7.0  ") . "\n";  // 7     (leading spaces ignored)
echo doubleval("1.2e3") . "\n";    // 1200  (scientific notation)
echo doubleval("abc12") . "\n";    // 0     (no leading number)
?>

Isso o torna conveniente para extrair um número de uma string com unidade, mas também significa que um valor malformado se torna silenciosamente 0.0 em vez de gerar um erro — valide primeiro se essa distinção for importante.

doubleval() vs. cast (float)

Para valores escalares, doubleval($x) e (float) $x produzem o mesmo resultado, por isso o cast geralmente é preferido no código moderno. doubleval() ainda é útil como callback, por exemplo com array_map():

<?php
$inputs = ["1.5", "2", "3.75kg"];
$floats = array_map('doubleval', $inputs);
print_r($floats);
// Array ( [0] => 1.5 [1] => 2 [2] => 3.75 )
?>

doubleval() vs. floatval()

Não há diferença funcionaldoubleval() é um alias definido de floatval(). O código moderno deve preferir floatval() porque o nome é mais claro e corresponde ao nome do tipo float usado em todo o PHP.

Conclusão

doubleval() converte qualquer valor escalar para float, analisando a parte numérica inicial de strings e retornando 0.0 quando nenhum número é encontrado. É idêntica a floatval(), que é o nome preferido atualmente. Para converter para outros tipos, veja intval() e settype().

Prática

Prática
O que faz a função doubleval() em PHP?
O que faz a função doubleval() em PHP?
Was this page helpful?