写一个余弦计algorithm

我试图在C中使用余弦定律返回与给定angular度相反的三angular形边的长度。

现在我得到了在Excel中工作的公式,并给出了正确的结果。 然而,当我在CI中尝试它时得到了错误的结果,我无法弄清楚为什么。

对于testing,我有sideA为21.1,sideB为19和他们之间的angular度为40度。 现在答案应该是14.9,就像我在Excel中得到的一样。 然而在C我得到23.735。 请有人帮我弄清楚我错了什么地方

// Find the length of a side of a triangle that is oppisit a given angle using the Law Of Cosine // for example using an triangle that is 21.1cm on one side, 19 cm on the other and an angle of 40 degreese inbetween then.... // in excel it worked and the formuler was =SQRT(POWER(23.1;2)+POWER(19;2)-2*(23.1)*(19)*COS(40*(3.14159/180))) = 14.9 cm float my_Trig_LawOfCos_OppSideLength(float centerAngle, float sideA, float sideB) { float sideLengthPow2= (pow(sideA,2) + pow(sideB,2))) - ((2*sideA*sideB)*cos(centerAngle*(3.14159/180)); float sideLength = sqrt(sideLengthPow2); return sideLength; } 

如果以错误的顺序传递参数,会发生这种情况。 你把边长23.1放在angular度的位置上。

 def oppside(ang, lA, lB): return (lA**2+lB**2-2*(lA)*(lB)*cos(ang*(pi/180)))**0.5 oppside(40,19,23.1) >>> 14.905575729577208 oppside(19,23.1,40) >>> 19.65430416708927 oppside(23.1,19,40) >>> 23.72490935854042 

通常情况下,您可以通过生成一个显示错误结果的最小可执行示例来find这样的错误,因为那样您也会logging错误的函数调用(也许甚至可以自己查看)。