我试图编写一种方法,该方法将输入三个边长并以度为单位返回角度。它使用了针对c的角度求解的余弦定律,并且我切换了两侧,因此它可以找到第二个角度。但是,程序不输出任何正确的角度。例如,我输入了边长6,7和8,它给了我55.51,44.28和80.21。然而,6 - 7 - 8三角形中的任何角度都不匹配。这是我使用的方法:
double angleNo(double a, double b, double c)
{
double calc = Math.toDegrees(Math.acos((a*a + b*b - c*c)/(2*a*b)));
double s = calc*100;
double r = Math.round(s);
double e = r/100;
return e;
}
此外,如果有任何帮助,请执行以下操作:
angleOne = pull.angleNo(op1, op2, hypo);
angleTwo = pull.angleNo(op2, hypo, op1);
angleThree = 180 - angleTwo - angleOne;
}
System.out.println("The angles are " + angleOne + "°, " + angleTwo + "°, " + angleThree + "°.")
任何帮助都很可爱,谢谢。
答案 0 :(得分:2)
公式是
所以改变
Math.toDegrees(Math.acos((a*a + b*b - c*c)/2*a*b));
到
Math.toDegrees(Math.acos((a*a + b*b - c*c)/(2*a*b)));
^ ^
(否则,您要除以2
并乘以a*b
,而您希望除以2*a*b
。)
我建议你不要尝试对方法内的值进行舍入。在您需要打印值之前,让它为double
,然后使用例如
System.out.printf("Value: %.2f%n", yourDouble);