1. 简介

本文将介绍如何在 Java 中计算对数,涵盖常用对数(以 10 为底)、自然对数(以 e 为底)以及自定义底数的对数计算方式。

2. 什么是对数

对数是一种数学运算,用于表示一个数需要以某个固定数为底数进行多少次幂运算才能得到。

其基本定义如下:

$$ \log_b(x) = y \quad \text{当且仅当} \quad b^y = x $$

简单来说,对数回答的问题是:一个数需要乘以自己多少次才能得到另一个数?

3. 计算常用对数(以 10 为底)

在 Java 中,我们可以使用 Math.log10() 方法来计算以 10 为底的对数。

✅ 示例代码如下:

@Test
public void givenLog10_shouldReturnValidResults() {
    assertEquals(Math.log10(100), 2, 0.001);
    assertEquals(Math.log10(1000), 3, 0.001);
}

⚠️ 注意:浮点数比较时建议使用误差范围,避免精度问题。

4. 计算自然对数(以 e 为底)

自然对数是以数学常数 e 为底的对数,在 Java 中我们使用 Math.log() 方法进行计算。

✅ 示例代码如下:

@Test
public void givenLog_shouldReturnValidResults() {
    assertEquals(Math.log(Math.E), 1, 0.001);
    assertEquals(Math.log(10), 2.302585, 0.001);
}

其中 Math.E 表示自然对数的底数 e,约为 2.71828。

5. 自定义底数的对数计算

有时候我们需要计算非 10 或 e 为底的对数。这时可以使用换底公式:

$$ \log_b(x) = \frac{\log_{10}(x)}{\log_{10}(b)} = \frac{\ln(x)}{\ln(b)} $$

✅ Java 实现如下:

@Test
public void givenCustomLog_shouldReturnValidResults() {
    assertEquals(customLog(2, 256), 8, 0.001);
    assertEquals(customLog(10, 100), 2, 0.001);
}

private static double customLog(double base, double logNumber) {
    return Math.log(logNumber) / Math.log(base);
}

这个方法灵活实用,适合各种底数的对数需求。

6. 总结

本文介绍了 Java 中三种主要的对数计算方式:

  • ✅ 使用 Math.log10() 计算常用对数
  • ✅ 使用 Math.log() 计算自然对数
  • ✅ 使用换底公式实现任意底数的对数计算

这些方法在算法、数据处理、科学计算等场景中都非常实用。希望本文对你理解和使用 Java 中的对数运算有所帮助!

完整源码可在 GitHub 获取。


原始标题:Calculating Logarithms in Java | Baeldung