此处有关于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。
这里发生了什么?
答案 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弧度的棕褐色。)