对数计算器
计算 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) 是手算任意底数的通用方法。
这个工具解决你的问题了吗?
提交后会把工具名、你的输入与当前结果发送到服务器;请勿填写身份证号、手机号等隐私信息。
AI 助手 会结合你当前的输入与结果回答
追问会再次把当前输入与结果发送到服务器;请勿填写隐私信息。
使用步骤
- 输入真数 x,选底数:lg / ln / log2 或自定义。
- 看结果;定义域非法(x ≤ 0 或底 ≤ 0/1)会报错。
- 常用锚点:lg 100 = 2,log2 1024 = 10,ln e = 1。
- 复制结果;任意底数用换底公式 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 为底,出现在连续增长、复利、概率与微积分中,求导和换底最简洁。工程计算中两者都很常见。
延伸阅读
来自本站原创文章,讲清这个工具背后的算法与口径。