2013-03-18 32 views
0

我有一個計算atan在cpp中的問題。 M_PI已經被聲明爲3.14159 ....atan(-M_PI_2)沒有回退-90º

我的代碼是:

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; 

但在日誌中我得到:

Angle: -57.5184 

參考說admit [-pi/2,+ PI/2]弧度。 發生了什麼事?

+0

-57是一個rad =) – kassak 2013-03-18 10:54:20

回答

5

您正在獲得正確的輸出。

-57.5184度數相當於-1 rad如果您假設π = 3.14angle實際上是-1 rad這裏。您將其轉換爲度數,方法是將其乘以180併除以π

+0

pi至少是3.14159打印它,不僅是3.14 – vgonisanz 2013-03-18 10:53:23

+1

還是一樣的概念。我通常將這些常量定義爲6位或7位精度,以便我可以在浮點運算中使用它們而不會溢出。 (儘管我幾乎在任何地方仍然使用'double'類型; v) – 2013-03-18 10:54:58

+0

@Piperoman你沒有得到它。 '-1 * 180/Pi = -57.5184' ... – Walter 2013-03-18 10:56:47