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.
Расширенные примеры
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
$data = [42, log(0), acos(2), 3.14];
$filtered = array_filter($data, 'is_finite');
print_r($filtered);Array
(
[0] => 42
[3] => 3.14
)$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: нет
Аналоги в других языках
import math
print(math.isfinite(42))
print(math.isfinite(float('inf')))True False
console.log(isFinite(42));
console.log(isFinite(1/0));true false
SELECT IS_FINITE(42), IS_FINITE(1/0);1 | 0