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

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

Функция 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
Похожие функции в PHP

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 улучшена стабильность типов, но сигнатура и поведение функции остались прежними.

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

Работа с логарифмами:

Пример php
$large = log(0);
echo is_infinite($large) ? 'Бесконечность' : 'Конечное число';
echo '\n';
echo $large;
Бесконечность
-INF

Сравнение с NAN:

Пример php
$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

Использование в математических расчетах:

Пример php
function safeDivision($a, $b) {
    if($b == 0) {
        return INF;
    }
    return $a / $b;
}

$result = safeDivision(10, 0);
if(is_infinite($result)) {
    echo "Результат: бесконечность";
} else {
    echo "Результат: $result";
}
Результат: бесконечность

Обработка экспоненциальных значений:

Пример php
$exp = exp(1000);
echo is_infinite($exp) ? 'Переполнение' : 'В пределах';
echo "\n$exp";
Переполнение
INF

Проверка в пользовательских функциях валидации:

Пример php
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, а не бесконечность.

PHP is_infinite function comments

En
Is infinite Finds whether a value is infinite