Мне нужна функция log
для JavaScript, но она должна быть базовой 10. Я не вижу никаких данных для этого, поэтому я предполагаю, что это невозможно. Есть ли там математические волшебники, которые знают решение для этого?
Как я могу указать базу для Math.log() в JavaScript?
Ответ 1
"Смена базы" Формула/Идентичность
Числовое значение для логарифма по основанию 10 может быть вычислено со следующим тождеством.
Поскольку Math.log(x)
в JavaScript возвращает натуральный логарифм x
(такой же, как ln (x)), для базы 10 вы можете разделить на Math.log(10)
(так же, как ln (10)):
function log10(val) {
return Math.log(val) / Math.LN10;
}
Math.LN10
является встроенной предварительно Math.LN10
константой для Math.log(10)
, поэтому эта функция по существу идентична:
function log10(val) {
return Math.log(val) / Math.log(10);
}
Ответ 2
Легко, просто измените базу, разделив ее на журнал (10). Существует даже постоянный, чтобы помочь вам
Math.log(num) / Math.LN10;
что совпадает с:
Math.log(num) / Math.log(10);
Ответ 3
Вы можете просто делить логарифм вашего значения и логарифм нужной базы, также вы можете переопределить метод Math.log
, чтобы принять необязательный базовый аргумент:
Math.log = (function() {
var log = Math.log;
return function(n, base) {
return log(n)/(base ? log(base) : 1);
};
})();
Math.log(5, 10);
Ответ 4
ответ здесь может вызвать очевидную проблему точности и не является надежным в некоторых случаях использования
> Math.log(10)/Math.LN10
1
> Math.log(100)/Math.LN10
2
> Math.log(1000)/Math.LN10
2.9999999999999996
> Math.log(10000)/Math.LN10
4
Ответ 5
Math.log10 = function(n) {
return (Math.log(n)) / (Math.log(10));
}
Затем вы можете сделать
Math.log10(your_number);
ПРИМЕЧАНИЕ. Первоначально я думал сделать Math.prototype.log10 = ...
, чтобы сделать это, но пользователь CMS указал, что Math не работайте таким образом, поэтому я отредактировал часть .prototype
.
Ответ 6
const logBase = (n, base) => Math.log(n) / Math.log(base);
Ответ 7
FF 25+ поддерживает метод Math.log10
. Вы можете использовать polyfill:
if (!Math.log10) Math.log10 = function(t){ return Math.log(t)/Math.LN10; };
В MDN перечислены поддерживаемые браузеры.
Настольные браузеры
Chrome Firefox (Gecko) Internet Explorer Opera Safari 38 25 (25) Not supported 25 7.1
Мобильные браузеры
Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Not supported Not supported 25.0 (25) Not supported Not supported iOS 8
Ответ 8
Если у вас есть число x, то использование Math.log(x)
будет по существу равно lnx.
Чтобы преобразовать его в базу, отличную от e, вы можете использовать следующую функцию:
function(x){ return Math.log(x)/Math.log(10); }
Ответ 9
Math.log10(x)
! 😁
Верхний ответ подходит для произвольной базы, но вопрос касается базы 10 журналов, а Math.log10(x)
является стандартным для всех браузеров с 2015 года. *
* За исключением IE, если это важно для вас по какой-то причине.