2014-11-22 4 views
1

Я нашел ошибку при вычислении логарифма с использованием функции Math.log в JavaScript. Например, рассмотрим число (скажем, 0,1), фактическое log value of 0.1 to the base 10 is -1.Math.log возвращает неправильное значение

Но когда я использую функцию Math.log в javascript, она возвращает -2.302585. Ясно, что это неправильно. Итак, следует ли написать собственную функцию для вычисления логарифма или есть ли какие-либо другие методы, доступные в JavaScript для вычисления логарифма вручную?

+0

возможно дубликат [Почему JavaScript Math.log (1,001) возвращает неверное значение?] (HTTP: // stackoverflow.com/questions/5040611/why-does-javascript-math-log1-001-return-the-wrong-value) –

ответ

3

От https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log:

Функция Math.log() возвращает натуральный логарифм (электронной базы) числа.

Возможно, вы хотите Math.log10, см. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10, но не поддерживаются в IE.

Основная математика говорит, что вы можете преобразовать натуральный логарифм в логарифм базы 10 путем деления на 2.303. Эта константа определяется как Math.LN10, так:

function log(x) { 
    return Math.log(x)/Math.LN10; 
} 

или более общо:

function log(x, base) { 
    return Math.log(x)/Math.log(base); 
} 
+0

Спасибо за информацию, должен быть общий метод вычисления логарифмов для всех баз в JS, справа ? – Kira

+0

Не нужно быть, просто умножьте на соответствующий коэффициент преобразования. –

+0

Я проверил ваш ответ и отредактировал ваш код, чтобы в общем случае вычислить логарифм для любой базы не только 10. Я думаю, это правильно. – Kira

Смежные вопросы