how to calculate logarithm of a number
如何計算一個數的對數

對數究竟是什麼

一個數的對數是指將所選底數自乘到多少次方能得到該數的指數,寫成 log_b(x) = y 即 b^y = x。要計算它就是解一個簡單的方程式:如果你知道底數和想要的結果,對數就會告訴你底數的多少次方能達到那個結果。最常見的三個底數是 10(常用對數)、e ≈ 2.71828(自然對數,記作 ln),以及 2(二進位對數)。任何其他底數——5、7、42——都可以用換底公式 log_b(x) = ln(x) ÷ ln(b) 轉換成這些,因此只要計算機懂得 ln,就能回傳任何底數的結果。輸入是有限制的:引數 x 必須大於 0,底數也必須大於 0 且不等於 1,因為正數底數的任何實數次方都不可能得到 0 或負數。

「對數」(logarithm)這個詞源自希臘文與拉丁文的混成詞,意為「比例數」,這暗示了這個運算的真正含義:計算一個數必須自我乘多少次才能達到另一個數。在 log_b(x) = y 中,b 是底數,x 是引數(你開始的數),y 是答案——也就是指數。問「log2(8) 是多少?」等同於問「2 的多少次方等於 8?」對數把一個乘法問題重新表述為關於指數的問題,而這個簡單的轉換正是解開大量科學、工程和電腦科學奧祕的關鍵。這就是為什麼同一個數學運算能同時處理地震、音量、化學中的酸鹼度、金融中的成長率,以及二元搜尋的執行時間。

對數公式與換底法則

對數的一般定義有兩種等價的寫法:

log_b(x) = y   ⟺   b^y = x

換底恆等式可以用自然對數來表示任何底數:

log_b(x) = ln(x) ÷ ln(b)

正是這個恆等式,讓一台懂得計算 ln 的計算機能回答任何底數的問題。一旦你有了 ln(x) 和 ln(b),相除就完成了。這個公式是精確的:除了自然對數本身的精度之外,沒有任何近似。多數瀏覽器會計算到十五或十六位有效數字。對於像 2、10 和 e 這類特殊底數,現代 JavaScript 引擎內建了高精度函式,因此 log2(8) 會精準回傳 3,而非 2.9999999999999996,而像 log10(7) 這種真正無理數的結果則會保留完整的小數細節。微小的浮點誤差——例如本應為 3 卻出現 3.0000000000000004——會被截斷到十二位有效數字,這足以清理掉這種假象,卻永遠不會隱藏真正的分數結果。

動手算換底公式:要求 log5(25),計算 ln(25) ÷ ln(5)。其比值正好是 2,驗算則是 5^2 = 25。一旦記住這個恆等式,其他所有底數都是同樣的兩個步驟——計算 ln(x)、計算 ln(b)、相除。

在動手驗算時,幾個對數恆等式也會用到:

  • 乘積:log_b(mn) = log_b(m) + log_b(n)
  • 商數:log_b(m/n) = log_b(m) − log_b(n)
  • 次方:log_b(m^n) = n · log_b(m)
  • 換底:log_b(x) = ln(x) ÷ ln(b) = log10(x) ÷ log10(b)

記住最後一條,就足以解決幾乎所有實際問題,其他的就交給計算機。

如何計算一個數的對數

要對任何正數和任何底數求 log_b(x),最快的方法是使用對數計算機。它完全在你的瀏覽器中執行,所以不會傳送任何資料到伺服器,答案在你停止輸入的瞬間就會出現。請依照下列步驟:

  1. 在引數 (x) 欄位中輸入你想取對數的數值。該數值必須大於 0。
  2. 在底數欄位中輸入底數。如果想要自然對數 (ln),請留空,它會以 e 作為底數。
  3. 在你停止輸入的瞬間讀取結果。該工具會直接顯示 log_base(x),同時也會顯示同一引數的 ln(x)、log10(x) 和 log2(x)。
  4. 看一下答案下方 2^exponent 形式的解釋——對於像 log2(8) 這種乾淨的結果,它會顯示「log2(8) = 3」,並搭配「2^3 = 8」的對應推理,讓抽象的答案變得具體。

如果你是手動驗算作業題,運算順序每次都一樣:計算 ln(x)、計算 ln(b)、相除。對於像 log2(8) 這種常見引數,相除會得到一個整數,但對於像 log10(7) 這種任意數值,結果是無理數,計算機會顯示四捨五入後的小數,而不會犧牲精度。若想進一步了解這個工具的詳細操作,這份立即計算任意底數對數的指南更詳細地說明了換底步驟。

ln、log10 與 log2 的比較

大多數實際問題都可以化約為三種底數之一。知道該選用哪一種,能節省時間並避免單位混淆。

記法底數出現的場合
ln(x)e ≈ 2.71828連續複利成長、半衰期衰變、微分導數、資訊理論熵(除以 ln 2 之後)
log(x), log10(x)10化學中的 pH 值、聲學中的分貝、地震的芮氏規模、恆星視星等
log2(x)2二元搜尋的深度、平衡樹的高度、許多演算法的 O(log n) 執行時間、編碼 x 個項目所需的位元數

每一列都對應著一個能涵蓋整個實務領域的底數。當沒有寫出任何底數時,「log」在學校和工程語境中通常指 log10,但在高等數學中「log」經常預設為自然對數。對數計算機同時並列顯示三種數值,免除了這種模糊性,所以你不必記住課本用的是哪種慣例。

輸入限制:計算機接受的值

對數只在受限的定義域內有意義,而一個好的計算機會強制執行這個限制,而不是回傳一個錯誤的值。以下是輸入允許的範圍及其原因:

輸入允許的範圍原因
引數 x大於 0正數底數的任何實數次方都不等於 0 或負數
底數 b大於 0,且不等於 1底數為 1 時,換底公式中的 ln(b) = 0,會導致除以零
負數底數不允許會使引數被提升到實數中不存在的非整數次方

如果你在底數欄位輸入 0、−5 或 1,計算機會回傳清楚的「未定義」訊息,而不是給出一個誤導性的數字。這種驗證很重要,因為換底公式要除以 ln(b),所以底數為 1 時會導致除以零,而負數底數根本沒有實數值的對數。

例題演練:log2(8) = 3

假設你要計算 log2(8)。這個問題問的是「2 的多少次方等於 8?」答案是 3,因為 2^3 = 8。用換底公式來驗算:

log2(8) = ln(8) ÷ ln(2) ≈ 2.07944 ÷ 0.69315 ≈ 3.0000

8 以 2 為底的對數正好是 3,不需要任何四捨五入。相比之下,log10(7) 是無理數——沒有任何 10 的整數次方等於 7——其結果約為 0.845098,並保留完整的小數細節。計算機會誠實地保留這種區別:整數答案使用等號,真正的分數則使用約等號,因此結果絕不會被悄悄四捨五入。

對數在課堂外的應用

一旦開始留意,你會發現對數幾乎無所不在,凡是涉及巨大動態範圍的測量都會用到它。溶液的 pH 值是其氫離子濃度的 −log10,所以 pH 3 的酸性是 pH 4 的十倍。分貝是以 10 為底的刻度來比較音量強度,所以 90 dB 的地鐵聲音並不是 60 dB 對話的兩倍響,而是大約一千倍的強度。地震規模的芮氏規模同樣以 10 為底——規模 7 的地震釋放的震動振幅是規模 6 的十倍。在電腦科學中,log2 描述的是平衡二元搜尋樹的深度、將清單對半切割直到崩潰所需的次數,以及編碼一個數字所需的位元長度。在金融領域,連續複利直接使用 e 和 ln,這就是為什麼在大多數成長與衰減模型中,自然對數是預設的底數。

同樣的以 2 為底的推理也解釋了為什麼把已排序清單的大小加倍,在二元搜尋中每次對半切割只會多增加一次比較;以及為什麼把電腦的記憶體加倍,其定址空間會倍增,但平衡搜尋的成本卻不會倍增。連續複利成長、放射性半衰期,以及機率在多次獨立試驗中的複合方式,都基於自然對數,原因相同:當變化與當前值成正比時,數學就化簡為 e 和 ln。

無論是上述哪一種——pH 轉換、二元樹深度、O(log n) 執行時間,或是解 b^y = x 求指數 y——最快速的方法都是使用對數計算機,它會在你停止輸入的瞬間回傳答案並顯示推理過程。一切都在你的瀏覽器本機執行,所以只要頁面載入完成後,即使離線也能使用,而你的輸入永遠不會離開你的裝置。