[javascript] JavaScript에서 Math.log ()의 기본을 어떻게 지정할 수 있습니까?

logJavaScript 용 함수 가 필요 하지만 기본 10이어야합니다. 이에 대한 목록을 볼 수 없으므로 불가능하다고 가정합니다. 이에 대한 해결책을 아는 수학 마법사가 있습니까?



답변

“기초의 변화”공식 / 정체성

밑이 10 인 로그의 숫자 값은 다음과 같은 ID로 계산할 수 있습니다.

밑이 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.log(10)함수는 기본적으로 다음과 같습니다.

function log10(val) {
  return Math.log(val) / Math.log(10);
}


답변

간단히, log (10)로 나누어서 기본을 변경하십시오. 당신을 도울 상수도 있습니다

Math.log(num) / Math.LN10;

이는 다음과 같습니다.

Math.log(num) / Math.log(10);


답변

값의 로그와 원하는 밑의 로그를 간단히 나눌 수 있으며 Math.log, 선택적인 기본 인수를 허용하도록 메서드를 재정의 할 수도 있습니다 .

Math.log = (function() {
  var log = Math.log;
  return function(n, base) {
    return log(n)/(base ? log(base) : 1);
  };
})();

Math.log(5, 10);


답변

여기에 대한 대답은 명백한 정밀도 문제를 야기하고 일부 사용 사례에서는 신뢰할 수 없습니다

> 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


답변

const logBase = (n, base) => Math.log(n) / Math.log(base);

https://ko.wikipedia.org/wiki/Logarithm#Change_of_base


답변

Math.log10 = function(n) {
    return (Math.log(n)) / (Math.log(10));
}

그럼 넌 할 수있어

Math.log10(your_number);

참고 : 처음 Math.prototype.log10 = ...에이 작업 을 수행하려고했지만 사용자 CMS 는 Math가 이런 식으로 작동하지 않는다고 지적 했으므로 .prototype부분을 편집했습니다 .


답변

FF 25+는 Math.log10방법을 지원합니다 . 폴리 필을 사용할 수 있습니다.

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