非右三角形的三角形边输入输出角度

时间:2014-09-30 16:47:12

标签: java math trigonometry

我试图编写一种方法,该方法将输入三个边长并以度为单位返回角度。它使用了针对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 + "°.")        

任何帮助都很可爱,谢谢。

1 个答案:

答案 0 :(得分:2)

公式是

enter image description here

所以改变

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);