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 ✅