如何让Java编写的计算器三角函数按角度而非弧度计算
问题核心
Java 标准库Math类的三角函数默认以弧度为计算单位,直接传入用户输入的角度值会得到不符合预期的结果,之前调用Math.toDegrees无效是因为用错了转换方法。
错误原因
Math.sin()、Math.cos()、Math.tan()三个方法的入参要求为弧度值,不支持直接传入角度Math.toDegrees()的功能是将弧度转换为角度,和当前需要的「角度转弧度」的转换方向完全相反,无法解决问题
修复方案
计算三角函数前,先调用Math.toRadians()方法将用户输入的角度值转换为弧度,再传入三角函数方法即可。
修正后的完整可运行代码:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Please input a value to recieve the Trigonemetric value in degrees "); double degrees = scanner.nextDouble(); // 先将角度转为弧度再传入三角函数计算 double sineOfAngle = Math.sin(Math.toRadians(degrees)); double cosOfAngle = Math.cos(Math.toRadians(degrees)); double tanOfAngle = Math.tan(Math.toRadians(degrees)); System.out.println(); System.out.println("The Sine of " + degrees + " degrees is : " + sineOfAngle); System.out.println("The Cosine of " + degrees + " degrees is : " + cosOfAngle); System.out.println("The Tangent of " + degrees + " degrees is : " + tanOfAngle); } }
额外说明
- 如果不想用内置的转换方法,也可以手动按公式计算弧度:
弧度 = 角度 * Math.PI / 180,计算结果和Math.toRadians()完全一致 - 90度、270度这类角度的正切值不存在,计算时会返回无穷大,属于数学层面的正常结果,可根据需求添加边界判断做特殊处理
内容的提问来源于stack exchange,提问作者bruh
相关产品推荐
相关产品推荐

