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() следует использовать для явного вычисления десятичного логарифма, что делает код более читаемым.
Аналоги функции в других языках
Функция math.log10(x). Также есть math.log(x, 10).
import math
print(math.log10(100))2.0
Метод Math.log10(x). Возвращает десятичный логарифм.
console.log(Math.log10(1000));3
Функция 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 не было внесено значительных изменений в работу этой функции.
Расширенные примеры использования
Определение, сколько десятичных разрядов в числе.
function getOrderOfMagnitude($number) {
return floor(log10($number));
}
echo getOrderOfMagnitude(7542);3
Нормализация данных, имеющих большой разброс значений.
$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
)Нахождение показателя степени по известному результату.
// 10^x = 5000
$x = log10(5000);
echo $x;3.698970004336
Определение, во сколько раз одно число больше другого в логарифмической шкале.
function compareByOrder($a, $b) {
return log10($a) - log10($b);
}
echo compareByOrder(1000, 10);2
Возведение 10 в степень, полученную от log10.
$original = 42;
$logVal = log10($original);
$restored = 10 ** $logVal;
echo $restored;42
Безопасное вычисление логарифмов для массива чисел.
$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