Saya memerlukan log
fungsi untuk JavaScript, tetapi harus berbasis 10. Saya tidak dapat melihat daftar apa pun untuk ini, jadi saya menganggap itu tidak mungkin. Apakah ada penyihir matematika di luar sana yang tahu solusi untuk ini?
javascript
math
logarithm
MetaGuru
sumber
sumber
Jawaban:
Formula / Identitas "Perubahan Basis"
Karena
Math.log(x)
dalam JavaScript mengembalikan logaritma natural darix
(sama dengan ln (x) ), untuk basis 10 Anda dapat membaginya denganMath.log(10)
(sama dengan ln (10) ):Math.LN10
adalah konstanta precomputed bawaan untukMath.log(10)
, jadi fungsi ini pada dasarnya identik dengan:sumber
return Math.log(n) / Math.log(base);
Mudah, cukup ganti basis dengan membaginya dengan log (10). Bahkan ada konstanta untuk membantu Anda
yang sama dengan:
sumber
Anda bisa membagi logaritma nilai Anda, dan logaritma basis yang diinginkan, juga Anda bisa mengganti
Math.log
metode untuk menerima argumen basis opsional:sumber
jawabannya di sini akan menyebabkan masalah presisi yang jelas dan tidak dapat diandalkan dalam beberapa kasus penggunaan
sumber
(Math.round(Math.log(1000) / Math.LN10 * 1e6) / 1e6)
https://en.wikipedia.org/wiki/Logarithm#Change_of_base
sumber
Maka Anda bisa melakukannya
CATATAN: Awalnya saya berpikir untuk melakukan
Math.prototype.log10 = ...
ini, tetapi pengguna CMS menunjukkan bahwa Math tidak berfungsi seperti ini, jadi saya mengedit.prototype
bagian itu.sumber
Math
adalah objek, bukan fungsi konstruktor, oleh karena itu tidak memilikiprototype
properti..prototype
bagian;)FF 25+ mendukung suatu
Math.log10
metode. Anda dapat menggunakan polyfill:MDN mencantumkan browser yang didukung .
sumber
Math.log10(x)
! 😁Jawaban teratas baik untuk basis arbitrer, tetapi pertanyaannya adalah mengenai basis log 10, dan
Math.log10(x)
telah menjadi standar di semua browser sejak 2015. ** Kecuali IE, jika itu penting bagi Anda karena alasan tertentu.
sumber
Jika Anda memiliki angka x, maka penggunaan
Math.log(x)
dasarnya adalah lnx.Untuk mengonversinya menjadi basis selain e, Anda dapat menggunakan fungsi berikut:
sumber
Untuk penggunaan basis 10
Math.log10()
.Lihat dokumen di: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10
sumber