मैं जावास्क्रिप्ट में आधार Math.log () के लिए कैसे निर्दिष्ट कर सकता हूं?


204

मुझे logजावास्क्रिप्ट के लिए एक फ़ंक्शन की आवश्यकता है , लेकिन इसे आधार 10 होना चाहिए। मैं इसके लिए कोई सूची नहीं देख सकता हूं, इसलिए मैं मान रहा हूं कि यह संभव नहीं है। क्या कोई गणित के जादूगर हैं जो इसके लिए कोई समाधान जानते हैं?


2
ECMAScript 2015 के बाद से यहां आने वालों के लिए एक Math.log10 () तरीका है।
हगरा

जवाबों:


329

"आधार का परिवर्तन" फॉर्मूला / पहचान

आधार 10 के लिए लघुगणक के संख्यात्मक मान की गणना निम्नलिखित पहचान के साथ की जा सकती है।

आधार 10 के लिए लघुगणक


चूँकि Math.log(x)जावास्क्रिप्ट में आधार 10 के लिए x(जैसे कि ln (x) ) का प्राकृतिक लघुगणक लौटाता है , आप इसे 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);
}

10
वास्तव में, किसी भी आधार का उपयोग किया जा सकता है, न केवल या 2, जब तक कि दोनों लॉगरिदम एक ही आधार का उपयोग नहीं करते हैं।
जॉय

16
सूत्र के साथ एक छवि को जोड़ा और यदि आप बुरा नहीं मानते हैं तो विकिपीडिया से जुड़ा हुआ है।
अनुराग

13
प्रत्येक बार Math.log (10) की गणना करने के लिए बेकार। मैथ्यू को निरंतर रखने और स्टोर करने के लिए अनावश्यक नहीं है क्योंकि मैथ इस स्थिरांक को पहले से ही परिभाषित करता है w3schools.com/jsref/jsref_ln10.asp
माइकल कारिव

4
10 के अलावा अन्य आधारों के लिए, CMS के उत्तर को नीचे स्क्रॉल करें । यदि नीचे स्क्रॉल करना और किसी उत्तर को पढ़ना कठिन काम लगता है, तो मूल सिद्धांत हैreturn Math.log(n) / Math.log(base);
user56reinstatemonica8

4
मैंने यहां त्रुटि के लिए कुछ संभावित कमरे को देखा है, शायद फ्लोटिंग पॉइंट गणित के साथ क्या करना है। मैंने नोड में 1000 के मान के साथ उपरोक्त फ़ंक्शन की कोशिश की, और 2.9999999999999996 का परिणाम मिला। (हालांकि अन्य संख्याओं की मैंने कोशिश की, जैसे कि 10, 100 और यहां तक ​​कि 10000 सही मान के साथ सामने आए।)
user4815162342

64

आसान, बस लॉग (10) से विभाजित करके आधार बदलें। आपकी मदद करने के लिए एक निरंतरता भी है

Math.log(num) / Math.LN10;

जो समान है:

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

52

आप बस अपने मान के लघुगणक को विभाजित कर सकते हैं, और वांछित आधार के लघुगणक को भी, आप Math.logवैकल्पिक आधार तर्क को स्वीकार करने की विधि को ओवरराइड कर सकते हैं :

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

Math.log(5, 10);

15

यहाँ उत्तर स्पष्ट परिशुद्धता समस्या का कारण होगा और कुछ उपयोग मामलों में विश्वसनीय नहीं है

> 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

8
चयनात्मक गोलाई के साथ सटीकता को समायोजित करें: (Math.round(Math.log(1000) / Math.LN10 * 1e6) / 1e6)
शेन डैनियल


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

तब आप कर सकते हैं

Math.log10(your_number);

नोट: शुरू में मैंने ऐसा करने के लिए सोचा था Math.prototype.log10 = ..., लेकिन उपयोगकर्ता सीएमएस ने कहा कि गणित इस तरह से काम नहीं करता है, इसलिए मैंने .prototypeभाग को संपादित किया ।


3
Mathएक वस्तु है, एक रचनाकार नहीं है, इसलिए इसमें कोई prototypeसंपत्ति नहीं है ।
CMS

धन्यवाद सीएमएस। इससे पहले कि किसी को लगता है कि "प्रेरित" चीजों का परीक्षण करना चाहिए। मैं ड्राइंग पैड पर वापस जाऊंगा।
आर्टलंग

3
बस .prototypeभाग को हटा दें ;)
CMS

9

FF 25+ एक Math.log10विधि का समर्थन करता है । आप पॉलीफिल का उपयोग कर सकते हैं:

if (!Math.log10) Math.log10 = function(t){ return Math.log(t)/Math.LN10; };

एमडीएन समर्थित ब्राउज़रों को सूचीबद्ध करता है

डेस्कटॉप ब्राउजर

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

1

Math.log10(x)! 😁

शीर्ष उत्तर एक मनमाना आधार के लिए ठीक है, लेकिन सवाल लॉग बेस 10 के बारे में है, और 2015 से सभी ब्राउज़रोंMath.log10(x) में मानक है। *

* IE को छोड़कर, यदि यह किसी कारण से आपके लिए महत्वपूर्ण है।


0

यदि आपके पास संख्या x है, तो Math.log(x)अनिवार्य रूप से lnx का उपयोग किया जाएगा।

इसे ई के अलावा किसी अन्य आधार में बदलने के लिए, आप निम्न फ़ंक्शन का उपयोग कर सकते हैं:

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.