Is infinite: примеры (PHP)
is_infinite(float $num): boolФункция is_infinite() определяет, является ли переданное значение бесконечным (положительной или отрицательной бесконечностью). Она используется при работе с математическими вычислениями, где результат может превышать пределы чисел с плавающей точкой.
Функция применяется для проверки результатов операций, таких как деление на ноль, или вычислений с очень большими числами.
Аргументы:
- $value (float) – проверяемое значение типа float.
Функция возвращает true, если значение является бесконечностью (INF или -INF), и false в противном случае.
Проверка положительной бесконечности:
$inf = INF;
echo is_infinite($inf) ? 'true' : 'false';true
Проверка отрицательной бесконечности:
$negInf = -INF;
echo is_infinite($negInf) ? 'true' : 'false';true
Проверка обычного числа:
$num = 3.14;
echo is_infinite($num) ? 'true' : 'false';false
Проверка результата деления на ноль:
$result = 1.0 / 0;
echo is_infinite($result) ? 'true' : 'false';true
is_finite() – определяет, является ли число конечным. Возвращает true для обычных чисел и false для INF, -INF и NAN.
is_nan() – проверяет, является ли значение «не числом» (NAN).
Выбор функции: is_infinite() используют для обнаружения бесконечных значений, is_finite() – для проверки корректности чисел, is_nan() – для выявления ошибочных результатов вычислений.
Ошибка при передаче нечислового аргумента:
echo is_infinite('текст') ? 'true' : 'false';false
Функция возвращает false для строк, не выполняя автоматическое преобразование.
Путаница с is_finite():
$val = INF;
echo is_finite($val) ? 'Конечное' : 'Бесконечное';Бесконечное
is_finite() возвращает false для бесконечных значений.
Проверка NAN:
$nan = acos(2);
echo is_infinite($nan) ? 'true' : 'false';false
Для NAN нужно использовать функцию is_nan().
Функция is_infinite() появилась в PHP 4 и с тех пор не претерпела значительных изменений. В PHP 8 улучшена стабильность типов, но сигнатура и поведение функции остались прежними.
Работа с логарифмами:
$large = log(0);
echo is_infinite($large) ? 'Бесконечность' : 'Конечное число';
echo '\n';
echo $large;Бесконечность -INF
Сравнение с NAN:
$values = [INF, -INF, NAN, 1.0/0, acos(2)];
foreach($values as $val) {
echo "Значение: ". (string)$val;
echo ", is_infinite: ". (is_infinite($val)?'true':'false');
echo ", is_nan: ". (is_nan($val)?'true':'false');
echo "\n";
}Значение: INF, is_infinite: true, is_nan: false Значение: -INF, is_infinite: true, is_nan: false Значение: NAN, is_infinite: false, is_nan: true Значение: INF, is_infinite: true, is_nan: false Значение: NAN, is_infinite: false, is_nan: true
Использование в математических расчетах:
function safeDivision($a, $b) {
if($b == 0) {
return INF;
}
return $a / $b;
}
$result = safeDivision(10, 0);
if(is_infinite($result)) {
echo "Результат: бесконечность";
} else {
echo "Результат: $result";
}Результат: бесконечность
Обработка экспоненциальных значений:
$exp = exp(1000);
echo is_infinite($exp) ? 'Переполнение' : 'В пределах';
echo "\n$exp";Переполнение INF
Проверка в пользовательских функциях валидации:
function validateFloat($value) {
if(!is_numeric($value)) {
return "Не число";
}
$floatVal = (float)$value;
if(is_infinite($floatVal)) {
return "Бесконечное значение";
}
if(is_nan($floatVal)) {
return "Некорректное число";
}
return "Корректное число: $floatVal";
}
echo validateFloat(1e1000) . "\n";
echo validateFloat("текст") . "\n";Бесконечное значение Не число
Is infinite в Python
Функция math.isinf() из модуля math:
import math
print(math.isinf(float('inf')))
print(math.isinf(float('-inf')))True True
Is infinite в Javascript
Глобальная функция isFinite() и метод Number.isFinite():
console.log(isFinite(Infinity));
console.log(Number.isFinite(Infinity));false false
Is infinite в MySQL
Прямой аналог отсутствует, но можно использовать сравнение:
SELECT 1/0;NULL
В MySQL деление на ноль возвращает NULL, а не бесконечность.