ฉันต้องการlog
ฟังก์ชั่นสำหรับ JavaScript แต่จำเป็นต้องเป็นฐาน 10 ฉันไม่เห็นรายชื่อใด ๆ สำหรับสิ่งนี้ดังนั้นฉันคิดว่ามันเป็นไปไม่ได้ มีพ่อมดคณิตศาสตร์ที่รู้วิธีแก้ปัญหานี้หรือไม่?
ฉันต้องการlog
ฟังก์ชั่นสำหรับ JavaScript แต่จำเป็นต้องเป็นฐาน 10 ฉันไม่เห็นรายชื่อใด ๆ สำหรับสิ่งนี้ดังนั้นฉันคิดว่ามันเป็นไปไม่ได้ มีพ่อมดคณิตศาสตร์ที่รู้วิธีแก้ปัญหานี้หรือไม่?
คำตอบ:
สูตร / การเปลี่ยนแปลง "ฐาน" เอกลักษณ์
ค่าตัวเลขสำหรับลอการิทึมถึงฐาน 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);
}
return Math.log(n) / Math.log(base);
ง่ายเพียงแค่เปลี่ยนฐานโดยหารด้วยบันทึก (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
(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 = ...
เช่นนี้ แต่CMSผู้ใช้ชี้ให้เห็นว่าคณิตศาสตร์ไม่ทำงานในลักษณะนี้ดังนั้นฉันจึงแก้ไข.prototype
ส่วนนี้
.prototype
ส่วน;)
FF 25+ รองรับMath.log10
วิธีการ คุณอาจใช้ polyfill:
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
Math.log10(x)
! 😁
คำตอบที่ดีสำหรับฐานโดยพลการ แต่คำถามนั้นเกี่ยวกับ log base 10 และMath.log10(x)
เป็นมาตรฐานสำหรับเบราว์เซอร์ทั้งหมดตั้งแต่ปี 2558 *
* ยกเว้น IE หากเป็นเรื่องสำคัญสำหรับคุณด้วยเหตุผลบางประการ
หากคุณมีตัวเลข x การใช้Math.log(x)
จะเป็น lnx
หากต้องการแปลงเป็นฐานอื่นที่ไม่ใช่ e คุณสามารถใช้ฟังก์ชันต่อไปนี้:
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