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 (
42→42.0internamente). - Boolean —
true→1.0,false→0.0. null—0.0.- string não numérica —
0.0. - Array —
1.0para um array não vazio,0.0para um vazio (com um aviso). Evite passar arrays.
Exemplo básico
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 funcional — doubleval() é 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().