[javascript] JavaScript에서 Math.log ()의 기본을 어떻게 지정할 수 있습니까?
log
JavaScript 용 함수 가 필요 하지만 기본 10이어야합니다. 이에 대한 목록을 볼 수 없으므로 불가능하다고 가정합니다. 이에 대한 해결책을 아는 수학 마법사가 있습니까?
답변
“기초의 변화”공식 / 정체성
밑이 10 인 로그의 숫자 값은 다음과 같은 ID로 계산할 수 있습니다.
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