C++ atan(-M_PI_2)没有返回-90º;
我在计算cpp中的atan时遇到问题。M_PI已声明为3.14159 我的代码是:C++ atan(-M_PI_2)没有返回-90º;,c++,math,C++,Math,我在计算cpp中的atan时遇到问题。M_PI已声明为3.14159 我的代码是: double distanceNormalized = 1;// set constant con check value double angle = atan(distanceNormalized * (-M_PI_2)); // atan(-PI/2) must be -1 in rad stringstream ss; ss << " Angle: " << angle*180
double distanceNormalized = 1;// set constant con check value
double angle = atan(distanceNormalized * (-M_PI_2)); // atan(-PI/2) must be -1 in rad
stringstream ss;
ss << " Angle: " << angle*180/M_PI;
cout << ss << endl;
参考值表示[-pi/2,+pi/2]弧度。
发生了什么事?您得到了正确的输出
-57.5184
如果假设π=3.14
,则度等于-1 rad
<代码>角度实际上是-1 rad
。通过将其乘以180
并除以π
,得到正确的输出,可以将其转换为度
-57.5184
如果假设π=3.14
,则度等于-1 rad
<代码>角度实际上是-1 rad
。通过将它乘以180
并除以π将它转换为度,π至少是3.14159打印它,不仅是3.14仍然是相同的概念。我通常将这些常数定义为6或7位精度,这样我就可以在带浮点数的操作中使用它们,而不会溢出。(尽管我仍然在几乎所有地方使用double
类型;v)好吧,你是对的,我正在检查另一个结果,M_PI_2*atan()。Thanks@Walter-1*180/Pi=-57.5184
谷歌表示-57.2957,使用Pi作为3.14表示-57.3248。为了得到-57.5184,你必须使用π作为3.13。这种不准确的原因是什么?我认为他使用了3.14159而不是3.14:oPi至少是3.14159打印它,不仅仅是3.14仍然是相同的概念。我通常将这些常数定义为6或7位精度,这样我就可以在带浮点数的操作中使用它们,而不会溢出。(尽管我仍然在几乎所有地方使用double
类型;v)好吧,你是对的,我正在检查另一个结果,M_PI_2*atan()。Thanks@Walter-1*180/Pi=-57.5184
谷歌表示-57.2957,使用Pi作为3.14表示-57.3248。为了得到-57.5184,你必须使用π作为3.13。这种不准确的原因是什么?我认为他使用了3.14159而不是3.14:o
Angle: -57.5184