数学计算 本地计算 开箱即用 内置示例 不留痕迹

对数计算器

计算 log_b(x):常用对数 lg(底 10)、自然对数 ln(底 e)、二进制对数 log2(底 2),也可以输入任意自定义底数。真数与底数的定义域自动校验。

对数是「在乘法的世界里做减法」的工具:地震几级、声音分贝、pH 值、算法复杂度,背后全是它。手算却常卡在两处——底数不是 10 和 e 怎么办,以及真数到底能不能是零和负数。这里常用底数一键切换、任意底数直接填,定义域不合法时明确告诉你为什么不行。

定义域是重点:真数必须 > 0(log 的参数不能为 0 或负数),底数必须 > 0 且 ≠ 1——本工具对非法输入明确报错而不是给 NaN。换底公式 log_b(x) = ln(x) / ln(b) 是手算任意底数的通用方法。

使用步骤

  1. 输入真数 x,选底数:lg / ln / log2 或自定义。
  2. 看结果;定义域非法(x ≤ 0 或底 ≤ 0/1)会报错。
  3. 常用锚点:lg 100 = 2,log2 1024 = 10,ln e = 1。
  4. 复制结果;任意底数用换底公式 ln(x)/ln(b) 手算。

计算原理与示例

常用对数与自然对数

选底数:lg 默认以 10 为底,ln 以 e≈2.71828 为底,log2 常用于信息论与算法复杂度。

自定义底数

自定义底:例如 log5(125),底数选「自定义」输入 5,真数输入 125,结果为 3。

换底公式

换底公式:log_b(x) = lg(x) ÷ lg(b)。工具内部即按此式计算,任意底都精确。

代码示例

JavaScript 换底公式统一实现

const log = (x, base = 10) => Math.log(x) / Math.log(base);

log(100);          // 4.605(Math.log 是自然对数 ln)
log(100, 10);      // 2(lg)
log(1024, 2);      // 10(log2)
log(243, 3);       // 5(任意底)
// JS 的 Math.log(x) 就是 ln;lg 与 log2 有专用:
// Math.log10(x)、Math.log2(x)

Python math.log 带底数参数

import math

math.log(100)        # 4.605(ln)
math.log(100, 10)    # 2.0(lg)
math.log(1024, 2)    # 10.0
math.log10(100)      # 2.0(专用更快更准)
math.log2(1024)      # 10.0

# 定义域错误直接抛 ValueError,不会静默返回复数

常见问题

log 和 ln 有什么区别?

国内教材中 log 通常指以 10 为底的常用对数(也写作 lg),ln 特指以 e 为底的自然对数。工程与科学计算里 ln 更常见。

为什么 0 和负数没有对数?

对数的定义是「b 的多少次方等于 x」,而 b 的任何实数次方都大于 0,所以 x ≤ 0 时对数不存在,工具会提示超出定义域。

底数为什么不能是 1?

1 的任何次方都是 1,永远不可能等于 x(除非 x=1),这样的「对数」没有意义,所以定义排除底数为 1。

对数的定义是什么?

若 a^b = N(a > 0 且 a ≠ 1,N > 0),则 b = log_a N。也就是说对数是指数运算的逆运算,求解「底数要乘几次方才能得到这个数」。例如 log₂ 8 = 3,因为 2³ = 8。

换底公式怎么用?

log_a N = log_b N ÷ log_b a。它的价值在于把任意底数换成计算器上现成的常用对数或自然对数,例如 log₂ 8 = ln 8 ÷ ln 2 = 3。计算器没有底数切换键时用它即可。

对数可以用来做什么?

对数能把乘除变加减、把幂变乘法。声音分贝、地震震级、溶液 pH 值、复利期数、算法复杂度(O(log n))都基于它。当数据量级相差悬殊时,取对数后比较更直观。

常用对数 lg 和自然对数 ln 各用在哪?

lg 以 10 为底,适合处理十进制数量级,如分贝、pH、里氏震级;ln 以 e 为底,出现在连续增长、复利、概率与微积分中,求导和换底最简洁。工程计算中两者都很常见。

延伸阅读

来自本站原创文章,讲清这个工具背后的算法与口径。