Java中Math.sin、Math.cos、Math.tan接收弧度而非角度,需用Math.toRadians()转换角度,如sin(90°)应写为Math.sin(Math.toRadians(90));因浮点精度,Math.sin(Math.PI)≈1.22e-16而非精确0。

Java 中 Math.sin、Math.cos、Math.tan 计算的是**弧度制**下的三角函数值,不是角度制。直接传入角度会得到错误结果,必须先将角度转换为弧度。
参数单位是弧度,不是角度
Java 的三角函数方法默认接收弧度(radian),而日常习惯用角度(degree)。180° = π 弧度 ≈ 3.14159265…,所以:
- 30° 要写成
Math.toRadians(30)或30 * Math.PI / 180 - 90° 对应
Math.PI / 2,此时Math.sin(Math.PI / 2)≈ 1.0 - 错误写法:
Math.sin(90)—— 这是在求 sin(90 弧度) ≈ sin(5157°),结果约 −0.894
常用转换:角度 ↔ 弧度
Java 提供了便捷的静态方法:
-
Math.toRadians(double degrees):把角度转为弧度 -
Math.toDegrees(double radians):把弧度转为角度
例如:
立即学习“Java免费学习笔记(深入)”;
double angleInDegrees = 60; double result = Math.cos(Math.toRadians(angleInDegrees)); // ≈ 0.5
注意特殊值和精度问题
由于浮点数精度限制,理论为 0 或 ±1 的结果可能有微小误差:
-
Math.sin(Math.PI)不严格等于 0,而是约1.224646799136325e-16 - 比较时建议用误差范围判断,如
Math.abs(x) -
Math.tan(Math.PI / 2)会返回极大值(如 1.633123935319537e16),实际是趋向无穷大,不推荐直接计算 90°、270° 等奇数倍 90° 的正切值
反三角函数也返回弧度
Math.asin、Math.acos、Math.atan 返回的是弧度值,如需角度要再转换:
double rad = Math.asin(0.5); // ≈ 0.5236 弧度double deg = Math.toDegrees(rad); // ≈ 30.0°


















