2011-12-13 5 views
4

이 문제는 node.js 서버를 염두에두고 묻지 만 클라이언트 측 스크립트에도이 논리를 사용할 가능성이 높기 때문에 "javascript"로 질문했습니다.Javascript에서 다양한 기본 로그 함수를 어떻게 수행 할 수 있습니까?

여기에 문제가 있습니다. x 값의 집합이 주어지면 y는 로그 방식으로 확장되어야합니다. Math 객체는 자연 로그 [ln(x)]를 수행하지만 대수의 기준을 지정하기위한 인터페이스를 제공하지 않습니다. , 0.1111 ~

그러나, 나는 나에게이 작업을 수행 할 수있는 인터페이스가 표시되지 않는 반환해야

log[512](2)

:

특정 예를 들어, 나는 다음과 같은 찾아야 또한 로그베이스 옵션을 제공하는 라이브러리를 찾을 수 없습니다. 확실히 이것은 일반적인 문제이며 해결책이 있지만 내 검색은 서로 다른/관련없는 문제에 대한 해결책을 찾았습니다. 아이디어?

+0

가능한 중복 : 다음과 같이 올바른 버전입니다 [? 어떤 방법이 자바 스크립트 math.log()의 기본을 지정 (http://stackoverflow.com/questions/3019278) – hippietrail

답변

14

사용할 수있는 logarithm base change formula :

log[a](n) = log[b](n)/log[b](a) 

그래서 로그를 얻기 위해 (2)베이스 (512) 사용 :

Math.log 위의 자연 로그베이스를 사용하는 것으로
function log(b, n) { 
    return Math.log(n)/Math.log(b); 
} 

alert(log(2, 512)); 

; 즉, 수학적으로 ln으로 기록됩니다.

+2

자바 스크립트 함수는'function log (base, number) {return Math.ln (number)/Math.ln (base); }' –

+0

그래서 수학 문제가되었습니다. 이봐, 대수 문제를 풀어 봤는데 몇 년이 지났어. 빠른 수정을 가져 주셔서 감사합니다. – Aejay

+0

사실,이 질문은 수학 문제가 아니라 JS 문제라는 것을 잊어 버렸습니다. 감사! –

4

오늘 Google에서이 답변을 찾았습니다. 다른 사람도이 답변을 찾으면 작은 실수가 있습니다. 의

function log(b, n) { 
    return Math.log(n)/Math.log(b); 
} 
+0

글쎄, 지금 고쳐 졌어 ... :-) –