Log10: примеры (PHP)

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

Функция log10 в PHP

Общее описание

Функция log10() вычисляет десятичный (по основанию 10) логарифм числа. Она принимает один числовой аргумент и возвращает значение логарифма по основанию 10. Математически это выражается как log10(x) = y, где 10y = x.

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

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

Аргументы функции

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

  • $arg (тип float или int) – число, для которого вычисляется десятичный логарифм. Значение должно быть положительным. Для отрицательных чисел и нуля функция возвращает NAN или -INF.

Возвращаемое значение имеет тип float. В случае ошибки (например, передача нечислового аргумента) в PHP 8 будет выброшена ошибка типа TypeError.

Короткие примеры использования log10

Базовые вычисления

Пример вычисления логарифма от положительных чисел.

echo log10(100);
2
echo log10(1000);
3
echo log10(1);
0
Особые случаи аргументов

Работа с нулем, отрицательными числами и очень малыми значениями.

echo log10(0);
-INF
echo log10(-5);
NAN
echo log10(0.001);
-3

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

В PHP существуют другие функции для вычисления логарифмов.

  • log() – вычисляет натуральный логарифм (по основанию e). Может принимать второй необязательный аргумент для указания произвольного основания. log($arg, 10) эквивалентен log10($arg).
  • log1p() – вычисляет log(1 + $arg) более точно для малых значений аргумента.

log() предпочтительнее, когда требуется логарифм по произвольному основанию. log10() следует использовать для явного вычисления десятичного логарифма, что делает код более читаемым.

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

Python

Функция math.log10(x). Также есть math.log(x, 10).

import math
print(math.log10(100))
2.0
JavaScript

Метод Math.log10(x). Возвращает десятичный логарифм.

console.log(Math.log10(1000));
3
MySQL

Функция LOG10(x).

SELECT LOG10(100);
2

Отличие PHP-функции в том, что в PHP 8 передача нечислового аргумента вызывает TypeError, тогда как в JS и MySQL может возвращаться NaN или NULL.

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

Передача нечислового аргумента

В PHP 8 это вызывает TypeError.

echo log10('текст');
TypeError: log10(): Argument #1 ($num) must be of type float, string given
Ожидание логарифма от нуля или отрицательного числа

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

$result = log10(0);
echo $result * 2;
-INF
Неправильная проверка результата

Использование обычных сравнений с NAN.

$val = log10(-5);
if ($val == NAN) {
    echo 'Ошибка';
}
// Условие не сработает, нужно использовать is_nan()

Изменения в последних версиях PHP

В PHP 8.0 сигнатура функции была изменена. Аргумент должен быть типа float (ранее принимались различные типы с преобразованием). При передаче несовместимого типа теперь выбрасывается TypeError. В PHP 8.1 не было внесено значительных изменений в работу этой функции.

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

Вычисление порядка величины числа

Определение, сколько десятичных разрядов в числе.

Пример php
function getOrderOfMagnitude($number) {
    return floor(log10($number));
}
echo getOrderOfMagnitude(7542);
3
Логарифмическая шкала для визуализации данных

Нормализация данных, имеющих большой разброс значений.

Пример php
$data = [1, 10, 100, 1000, 10000];
$normalized = array_map('log10', $data);
print_r($normalized);
Array
(
    [0] => 0
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 4
)
Решение показательного уравнения

Нахождение показателя степени по известному результату.

Пример php
// 10^x = 5000
$x = log10(5000);
echo $x;
3.698970004336
Сравнение чисел по порядку величины

Определение, во сколько раз одно число больше другого в логарифмической шкале.

Пример php
function compareByOrder($a, $b) {
    return log10($a) - log10($b);
}
echo compareByOrder(1000, 10);
2
Обратное преобразование

Возведение 10 в степень, полученную от log10.

Пример php
$original = 42;
$logVal = log10($original);
$restored = 10 ** $logVal;
echo $restored;
42
Обработка массивов с проверкой данных

Безопасное вычисление логарифмов для массива чисел.

Пример php
$values = [100, 0, -5, 'текст', 0.1];
foreach ($values as $val) {
    if (is_numeric($val) && $val > 0) {
        echo log10($val) . '\n';
    } else {
        echo 'Недопустимое значение\n';
    }
}
2
Недопустимое значение
Недопустимое значение
Недопустимое значение
-1

PHP log10 function comments

En
Log10 Base-10 logarithm