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

Использование функции is_finite для проверки чисел в PHP
Раздел: Работа с переменными
is_finite(float $num): bool

Функция is_finite в PHP

Функция is_finite() проверяет, является ли переданное значение конечным числом. Она возвращает true, если значение является допустимым конечным числом в рамках плавающей арифметики IEEE 754.

Когда используется

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

Аргументы

Функция принимает один обязательный параметр:

  • $value - проверяемое значение типа float.

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

Проверка обычных чисел
echo is_finite(42) ? 'true' : 'false';
true
Проверка бесконечности
$inf = log(0);
echo is_finite($inf) ? 'true' : 'false';
false
Проверка нечислового значения
echo is_finite(acos(2)) ? 'true' : 'false';
false

Похожие функции в PHP

Определяет, является ли значение нечисловым (NaN). Используется для проверки результатов недопустимых математических операций.

Проверяет, является ли значение бесконечностью. Противоположна is_finite по логике работы.

Определяет, является ли переменная числом или строкой, содержащей число. Имеет более широкую область применения.

Типичные ошибки

Передача нечисловых аргументов
echo is_finite('строка');
Возвращает false, но лучше использовать is_numeric() для предварительной проверки.
Неправильное понимание результата
$val = 1.0;
echo is_finite($val) ? 'Конечное' : 'Бесконечное';
Конечное

Ошибка возникает, когда разработчик путает is_finite() с проверкой на целое число.

Изменения в PHP 8

В PHP 8 функция is_finite() не претерпела значительных изменений в поведении. Однако улучшена внутренняя обработка типов. При передаче нескалярных значений функция автоматически преобразует их к типу float.

Расширенные примеры

Обработка результатов вычислений
Пример php
function safe_division($a, $b) {
    $result = $a / $b;
    if (!is_finite($result)) {
        throw new Exception('Результат не является конечным числом');
    }
    return $result;
}
try {
    echo safe_division(10, 2);
} catch (Exception $e) {
    echo $e->getMessage();
}
5
Фильтрация массива
Пример php
$data = [42, log(0), acos(2), 3.14];
$filtered = array_filter($data, 'is_finite');
print_r($filtered);
Array
(
    [0] => 42
    [3] => 3.14
)
Сравнение с другими проверками
Пример php
$values = [NAN, INF, 5, 'текст'];
foreach ($values as $val) {
    echo "is_finite: ".(is_finite($val)?'да':'нет')."\n";
    echo "is_nan: ".(is_nan($val)?'да':'нет')."\n\n";
}
is_finite: нет
is_nan: да

is_finite: нет
is_nan: нет

is_finite: да
is_nan: нет

is_finite: нет
is_nan: нет

Аналоги в других языках

Python: math.isfinite()
import math
print(math.isfinite(42))
print(math.isfinite(float('inf')))
True
False
JavaScript: isFinite()
console.log(isFinite(42));
console.log(isFinite(1/0));
true
false
MySQL: IS_FINITE() (в MariaDB)
SELECT IS_FINITE(42), IS_FINITE(1/0);
1 | 0

PHP is_finite function comments

En
Is finite Finds whether a value is a finite legal number