मुझे log
जावास्क्रिप्ट के लिए एक फ़ंक्शन की आवश्यकता है , लेकिन इसे आधार 10 होना चाहिए। मैं इसके लिए कोई सूची नहीं देख सकता हूं, इसलिए मैं मान रहा हूं कि यह संभव नहीं है। क्या कोई गणित के जादूगर हैं जो इसके लिए कोई समाधान जानते हैं?
मुझे log
जावास्क्रिप्ट के लिए एक फ़ंक्शन की आवश्यकता है , लेकिन इसे आधार 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);
}
return Math.log(n) / Math.log(base);
आप बस अपने मान के लघुगणक को विभाजित कर सकते हैं, और वांछित आधार के लघुगणक को भी, आप 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
(Math.round(Math.log(1000) / Math.LN10 * 1e6) / 1e6)
const logBase = (n, base) => Math.log(n) / Math.log(base);
Math.log10 = function(n) {
return (Math.log(n)) / (Math.log(10));
}
तब आप कर सकते हैं
Math.log10(your_number);
नोट: शुरू में मैंने ऐसा करने के लिए सोचा था Math.prototype.log10 = ...
, लेकिन उपयोगकर्ता सीएमएस ने कहा कि गणित इस तरह से काम नहीं करता है, इसलिए मैंने .prototype
भाग को संपादित किया ।
.prototype
भाग को हटा दें ;)
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
Math.log10(x)
! 😁
शीर्ष उत्तर एक मनमाना आधार के लिए ठीक है, लेकिन सवाल लॉग बेस 10 के बारे में है, और 2015 से सभी ब्राउज़रोंMath.log10(x)
में मानक है। *
* IE को छोड़कर, यदि यह किसी कारण से आपके लिए महत्वपूर्ण है।
यदि आपके पास संख्या x है, तो Math.log(x)
अनिवार्य रूप से lnx का उपयोग किया जाएगा।
इसे ई के अलावा किसी अन्य आधार में बदलने के लिए, आप निम्न फ़ंक्शन का उपयोग कर सकते हैं:
function(x){ return Math.log(x)/Math.log(10); }
आधार 10 उपयोग के लिए Math.log10()
।
डॉक्स देखें: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10