W3docs

doubleval()

Узнайте о функции PHP doubleval(), которая преобразует значение в float и является псевдонимом floatval(). Синтаксис, возвращаемые значения и правила разбора строк.

Введение

Функция doubleval() преобразует значение в float (число с дробной частью). Она является точным псевдонимом floatval() — обе функции имеют одну и ту же реализацию. Название существует потому, что PHP исторически называл тип с плавающей точкой «double», а в PHP float и double — это один и тот же тип.

Функция doubleval() (или floatval()) используется тогда, когда у вас есть значение неизвестного или смешанного типа — как правило, string из формы, строки запроса или файла — и вам нужно надёжное число для выполнения арифметических операций.

Синтаксис

doubleval(mixed $value): float

$value — это значение для преобразования. Оно может быть string, целым числом, boolean или другим скаляром. Функция возвращает float-значение $value, или 0.0, если значение не может быть интерпретировано как число.

Возвращаемые значения

Поведение doubleval() зависит от типа значения:

  • Числовая string — разбирается до первого нечислового символа ("3.14"3.14).
  • Целое число / float — возвращается как float (4242.0 внутри).
  • booleantrue1.0, false0.0.
  • null0.0.
  • Нечисловая string0.0.
  • array1.0 для непустого array, 0.0 для пустого (с предупреждением). Избегайте передачи array.

Базовый пример

php— editable, runs on the server

Обратите внимание, что вывод показывает 42 и 1, а не 42.0 и 1.0. Значения являются float, но echo выводит float без дробной части без завершающего .0. Чтобы явно увидеть тип float, используйте var_dump():

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

Разбор строк с ведущими числами

doubleval() считывает ведущую числовую часть string и останавливается на первом символе, который не может быть частью числа. Пробелы в начале игнорируются, научная нотация поддерживается.

<?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)
?>

Это удобно для извлечения числа из string с единицами измерения, однако некорректное значение молча становится 0.0, а не вызывает ошибку — если это различие важно, предварительно выполните валидацию.

doubleval() против приведения типа (float)

Для скалярных значений doubleval($x) и (float) $x дают одинаковый результат, поэтому в современном коде обычно предпочитают приведение типа. doubleval() по-прежнему удобна в качестве callback-функции, например с 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() против floatval()

Функциональных отличий нетdoubleval() является определённым псевдонимом floatval(). В современном коде следует предпочитать floatval(), поскольку это название более понятно и соответствует имени типа float, используемому повсеместно в PHP.

Заключение

doubleval() преобразует любое скалярное значение в float, разбирая ведущую числовую часть строк и возвращая 0.0, если число не найдено. Она идентична floatval(), которая сегодня является предпочтительным названием. Для преобразования в другие типы см. intval() и settype().

Практика

Практика
Что делает функция doubleval() в PHP?
Что делает функция doubleval() в PHP?
Was this page helpful?