Is float: примеры (PHP)

Проверка чисел с плавающей точкой в PHP: функция is_float
Раздел: Работа с переменными
is_float(mixed $value): bool

Основы функции is_float

Функция is_float() в PHP определяет, является ли тип переменной числом с плавающей точкой (float или double). Эта функция возвращает true, если проверяемое значение имеет соответствующий тип, и false в противном случае.

Назначение и использование

Функция применяется для проверки типа переменных, особенно при обработке пользовательского ввода, чтении данных из файлов или баз данных, и в ситуациях, где требуется строгий контроль типов. Это важно для предотвращения ошибок в математических операциях.

Синтаксис и параметры

Функция имеет простой синтаксис:

bool is_float(mixed $value)

$value - обязательный параметр, представляющий переменную для проверки типа. Функция принимает любое значение и возвращает булевый результат.

Базовые примеры использования

Примеры демонстрируют различные варианты проверки типов данных:

// Проверка числа с плавающей точкой
$var1 = 3.14;
var_dump(is_float($var1));
bool(true)
// Проверка целого числа
$var2 = 42;
var_dump(is_float($var2));
bool(false)
// Проверка строки, содержащей число
$var3 = '3.14';
var_dump(is_float($var3));
bool(false)
// Проверка логического значения
$var4 = true;
var_dump(is_float($var4));
bool(false)
// Проверка null
$var5 = null;
var_dump(is_float($var5));
bool(false)
Аналогичные функции в PHP

PHP предлагает несколько функций для проверки типов данных:

Проверяет, является ли переменная числом или строкой, содержащей число. Возвращает true для целых чисел, чисел с плавающей точкой и их строковых представлений.

Определяет, является ли переменная целым числом. В отличие от is_float(), проверяет только целочисленный тип.

Возвращает строку с названием типа переменной. Может использоваться для более детального анализа типов данных.

Когда какую функцию использовать

is_float() применяется при строгой проверке типа float. is_numeric() подходит для проверки, можно ли значение использовать в математических операциях. is_int() используется для проверки целых чисел.

Типичные ошибки и недочеты
Путаница с is_numeric()

Наиболее частая ошибка - использование is_float() для проверки строк, содержащих числа:

// Неправильно
$value = '3.14';
if (is_float($value)) {
    echo 'Это число с плавающей точкой';
} else {
    echo 'Это не число с плавающей точкой';
}
Это не число с плавающей точкой
Проверка после математических операций

Результаты операций могут быть целыми числами, даже если используются дроби:

$result = 10 / 2;
var_dump(is_float($result));
bool(false)
Ошибки с приведением типов

Автоматическое приведение типов может привести к неожиданным результатам:

$value = 0.0;
var_dump(is_float($value));
var_dump(empty($value)); // Оба значения считаются 'false'
bool(true)
bool(true)
Изменения в последних версиях PHP

В PHP 8 функция is_float() не претерпела значительных изменений по сравнению с предыдущими версиями. Однако в PHP 8 были усилены требования к типам данных, что делает использование функций проверки типов более важным. Добавлена поддержка union types в объявлениях типов, что влияет на контекст использования подобных функций.

В PHP 7 улучшена производительность встроенных функций проверки типов. Функция is_float() остается стабильной и обратно совместимой со всеми предыдущими версиями PHP.

Расширенные примеры применения
Фильтрация массива чисел

Пример фильтрации массива для получения только чисел с плавающей точкой:

Пример php
$data = [1, 3.14, '5.67', 7, 8.9, 'text', 0.0];
$floats = array_filter($data, 'is_float');
print_r($floats);
Array
(
    [1] => 3.14
    [4] => 8.9
    [6] => 0.0
)
Проверка в пользовательских функциях

Использование is_float() для обеспечения типовой безопасности:

Пример php
function calculateTax(float $amount, float $rate) {
    if (!is_float($amount) || !is_float($rate)) {
        throw new TypeError('Оба параметра должны быть числами с плавающей точкой');
    }
    return $amount * $rate;
}

try {
    echo calculateTax(100.5, 0.2);
} catch (TypeError $e) {
    echo 'Ошибка: ' . $e->getMessage();
}
20.1
Работа с научной нотацией

Функция корректно обрабатывает числа в научной нотации:

Пример php
$scientific = 1.23e4;
var_dump(is_float($scientific));
var_dump($scientific);
bool(true)
float(12300)
Сравнение с приведением типа

Различия между строгой проверкой типа и приведением:

Пример php
$value = (float) '3.14';
var_dump(is_float($value));
var_dump($value);
bool(true)
float(3.14)
Проверка специальных значений

Функция корректно определяет специальные значения float:

Пример php
$inf = log(0);
$nan = acos(2);

var_dump(is_float($inf));
var_dump(is_float($nan));
var_dump($inf);
var_dump($nan);
bool(true)
bool(true)
float(-INF)
float(NAN)
Использование в комбинации с другими проверками

Комбинированная проверка для сложных условий:

Пример php
function validateNumber($value) {
    if (!is_numeric($value)) {
        return 'Нечисловое значение';
    }
    
    if (is_float($value + 0)) {
        return 'Число с плавающей точкой';
    }
    
    return 'Целое число';
}

echo validateNumber('3.14') . '\n';
echo validateNumber(42) . '\n';
echo validateNumber('text');
Число с плавающей точкой
Целое число
Нечисловое значение
Аналоги в других языках программирования

Is float в Python

В Python используется функция isinstance() с типом float:

# Python
value = 3.14
result = isinstance(value, float)
print(result)
True

Is float в Javascript

В JavaScript проверка типа осуществляется через typeof, но есть особенности:

// JavaScript
let value = 3.14;
let result = typeof value === 'number' && !Number.isInteger(value);
console.log(result);
true

Is float в MySQL

В MySQL нет прямой аналогии, но можно использовать проверки типов данных:

-- MySQL
SELECT 3.14 REGEXP '^[0-9]+\\.[0-9]+$' AS is_float_like;
1

Is float в Java

В Java используется оператор instanceof:

// Java
Object value = 3.14;
boolean result = value instanceof Double;
System.out.println(result);
true

PHP is_float function comments

En
Is float Finds whether the type of a variable is float