আমি জাভাস্ক্রিপ্টে ম্যাথ.লগ () এর বেসটি কীভাবে নির্দিষ্ট করতে পারি?


204

আমার logজাভাস্ক্রিপ্টের জন্য একটি ফাংশন প্রয়োজন , তবে এটি বেস 10 হওয়া দরকার আমি এর জন্য কোনও তালিকা দেখতে পাচ্ছি না, তাই আমি ধরে নিচ্ছি এটি সম্ভব নয়। এর বাইরে কোনও গণিত উইজার্ড আছে কি যারা এর সমাধান জানতে পারে?


2
যারা পরে এখানে আসবেন তাদের জন্য ECMAScript 2015 সাল থেকে একটি ম্যাথ.লগ 10 () পদ্ধতি রয়েছে।
হ্যাগ্রা

উত্তর:


329

"বেসের পরিবর্তন" সূত্র / পরিচয়

বেস 10 তে লগারিদমের সংখ্যাসূচক মানটি নিম্নলিখিত পরিচয় দিয়ে গণনা করা যেতে পারে।

বেস 10 এর জন্য লোগারিদম


যেহেতু Math.log(x)জাভাস্ক্রিপ্টে প্রাকৃতিক লোগারিদমটি (এলএন (এক্স) এরx সমান ) ফেরত এসেছে , বেস 10 এর জন্য আপনি ভাগ করতে পারেন Math.log(10)( এলএন (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
ম্যাথ.লগ (10) প্রতিবার গণনা করা অপব্যয়। Precalculate এবং দোকান যেহেতু গণিত এই ধ্রুবক সংজ্ঞায়িত ইতিমধ্যে অহেতুক w3schools.com/jsref/jsref_ln10.asp
মাইকেল Kariv

4
10 ব্যতীত অন্যান্য ঘাঁটির জন্য, সিএমএসের উত্তরে স্ক্রোল করুন । নিচে স্ক্রলিং এবং পড়া কঠোর পরিশ্রমের মত একটা উত্তর যদি মনে হয়, মৌলিক নীতিreturn Math.log(n) / Math.log(base);
user56reinstatemonica8

4
আমি এখানে ত্রুটির জন্য কিছু সম্ভাব্য ঘর লক্ষ্য করেছি, সম্ভবত ভাসমান পয়েন্ট গণিতের সাথে করণীয়। আমি কেবল নোডে 1000 এর মান দিয়ে উপরের ফাংশনটি চেষ্টা করেছি এবং 2.9999999999999996 এর ফলাফল পেয়েছি। (যদিও আমি চেষ্টা করেছি এমন অন্যান্য সংখ্যা, যেমন 10, 100 এবং এমনকি 10000, সঠিক মান সহ বেরিয়ে এসেছিল))
ব্যবহারকারী 481516232342

64

সহজ, কেবল লগ (10) দ্বারা ভাগ করে বেসটি পরিবর্তন করুন। এমনকি আপনাকে সাহায্য করার জন্য একটি ধ্রুবক রয়েছে

Math.log(num) / Math.LN10;

যা একই:

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

52

আপনি কেবল আপনার মানটির লগারিদম এবং পছন্দসই বেসের লগারিদমকে বিভক্ত করতে পারেন, এছাড়াও আপনি Math.logএকটি alচ্ছিক বেস আর্গুমেন্ট গ্রহণ করার পদ্ধতিটি ওভাররাইড করতে পারেন :

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সম্পত্তি নেই।
সিএমএস

ধন্যবাদ সিএমএস "অনুপ্রাণিত" বোধ করার আগে একজনকে জিনিস পরীক্ষা করা উচিত প্রমাণ করে। আমি আবার ড্রয়িং প্যাডে যাব।
আর্টলুং

3
কেবল .prototypeঅংশটি সরান ;)
সিএমএস

9

এফএফ 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

1

Math.log10(x)! 😁

শীর্ষ উত্তর একটি অবাধ বেস জন্য জরিমানা, কিন্তু প্রশ্ন লগ বেস 10 সংক্রান্ত হয়, এবং Math.log10(x)হয়েছে 2015. যেহেতু সব ব্রাউজার জুড়ে মান *

* আইই ব্যতীত, যদি এটি কোনও কারণে আপনার পক্ষে গুরুত্বপূর্ণ।


0

আপনার যদি একটি সংখ্যা x থাকে, তবে এর ব্যবহারটি Math.log(x)মূলত lnx হবে।

এটিকে ই ছাড়া অন্য বেসে রূপান্তর করতে, আপনি নিম্নলিখিত ফাংশনটি ব্যবহার করতে পারেন:

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.