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

Sha*_*ean 3 c# math

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

C# - 为什么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 //在<Piover2上1 dp.

这里发生了什么事?

小智 27

C#将角度视为弧度; 你的计算器正在使用学位.


dla*_*lin 23

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

随意转换值:

double DegreeToRadian(double angle) { return Math.PI * angle / 180.0;   }
double RadianToDegree(double angle) { return angle * (180.0 / Math.PI); }
Run Code Online (Sandbox Code Playgroud)

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


Eri*_*ich 7

你的计算器是Degrees,C#在Radians中进行这些计算.

要获得正确的值:

int angle = 45;  //in degrees

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

int aTanResult = Math.Atan(result) *180/Math.PI;
Run Code Online (Sandbox Code Playgroud)