1. 简介

在本篇教程中,我们将探讨如何使用 Java 的 Math.sin() 方法来计算正弦值,并介绍角度单位之间的转换方式——尤其是从我们更熟悉的“度”转换为 Java 三角函数所需的“弧度”。

2. 弧度 vs 度

Java 的 Math 类库中所有的三角函数(如 sin, cos, tan)都默认以弧度作为输入单位。

⚠️ 这点非常重要,很多开发者刚接触时容易踩坑。

弧度和度只是表达角度的两种不同方式。它们之间可以相互转换:

double inRadians = inDegrees * Math.PI / 180;
double inDegrees = inRadians * 180 / Math.PI;

为了简化操作,Java 提供了内置方法:

double inRadians = Math.toRadians(inDegrees);
double inDegrees = Math.toDegrees(inRadians);

✅ 所以,在使用 Java 提供的任何三角函数前,请务必确认你的输入是用什么单位表示的。

3. 使用 Math.sin

我们来看一下 Math.sin 的定义:

public static double sin(double a)

这个方法等价于数学中的正弦函数,但它要求参数 a以弧度为单位的角度值

假设我们有一个已知为度数的角度值:

double inDegrees = 30;

那么我们必须先将其转换为弧度:

double inRadians = Math.toRadians(inDegrees);

然后再传入 Math.sin()

double sine = Math.sin(inRadians);

但如果原始数据已经是弧度形式,那就无需再做转换。举个例子:

@Test
public void givenAnAngleInDegrees_whenUsingToRadians_thenResultIsInRadians() {
    double angleInDegrees = 30;
    double sinForDegrees = Math.sin(Math.toRadians(angleInDegrees)); // 0.5

    double thirtyDegreesInRadians = 1/6 * Math.PI;
    double sinForRadians = Math.sin(thirtyDegreesInRadians); // 0.5

    assertTrue(sinForDegrees == sinForRadians);
}

在这个测试中可以看到,无论是通过度数转弧度计算,还是直接使用对应的弧度值,结果是一样的。

⚠️ 注意:上面代码中 1/6 * Math.PI 实际上由于整数除法会得到 0,应该写成 Math.PI / 6 才对。

4. 总结

在这篇文章中,我们回顾了弧度和度的概念,并展示了如何在 Java 中正确地使用 Math.sin() 来处理这两种单位。

记住一点:Java 三角函数一律使用弧度作为输入单位,这是避免出错的关键。

源码示例可查看 GitHub 仓库:https://github.com/eugenp/tutorials/tree/master/core-java-modules/core-java-numbers


原始标题:Using Math.sin with Degrees