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() следует использовать для явного вычисления десятичного логарифма, что делает код более читаемым.

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

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

В 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

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

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 log10 function comments

En
Log10 Base-10 logarithm