C# - 为什么Math.Atan(1)!= 45附近的任何东西

时间:2009-10-14 04:17:13

标签: c# math

此处有关于Atan的另一篇文章,但我没有看到任何相关答案:

C# - Why Math.Atan(Math.Tan(x)) != x?

Math.Atan和tan-1不一样吗?在我的计算器上我做:

  

tan-1(1),我得到45。

     

tan(45)= 1

在C#中:

  

Math.Atan(1)= 0.78539816339744828 //   远在45附近。

     

Math.Tan(45)= 1.6197751905438615 // 1   dp超过< Piover2。

这里发生了什么?

4 个答案:

答案 0 :(得分:27)

C#将角度视为弧度;你的计算器正在使用度数。

答案 1 :(得分:23)

Atan(1)等于π/ 4。在弧度下工作时,这是正确的值。图书馆的其他计算也是如此。

随意转换值:

double DegreeToRadian(double angle) { return Math.PI * angle / 180.0;   }
double RadianToDegree(double angle) { return angle * (180.0 / Math.PI); }

这意味着45弧度等于约2578.31008度,因此您正在寻找的切线应更好地表示为tan(π/ 4)或者如果您不介意“作弊”:Math.Tan(Math.Atan(1)); // ~= 1。我相当自信,如果你自己尝试过,你已经意识到一些合理的事情正在发生,并且可能偶然发现了弧度与度数的关系。

答案 2 :(得分:7)

你的计算器是以度为单位的,C#在Radians中进行这些计算。

获取正确的值:

int angle = 45;  //in degrees

int result = Math.Tan(45 * Math.PI/180);

int aTanResult = Math.Atan(result) *180/Math.PI;

答案 3 :(得分:3)

Math.Atan以弧度为单位返回一个值。你的计算器正在使用学位。 0.7853 ...(pi / 4)弧度为45度。 (相反,Math.Tan(45)告诉你45弧度的棕褐色。)