有沒有人在處理sin/cos/tan/acos時看到這個奇怪的值..數學的東西?如何處理計算acos/sin/atan2的奇怪錯誤?
===怪異VALUE ===
-1。#IND00
=====================
void inverse_pos(double x, double y, double& theta_one, double& theta_two)
{
// Assume that L1 = 350 and L2 = 250
double B = sqrt(x*x + y*y);
double angle_beta = atan2(y, x);
double angle_alpha = acos((L2*L2 - B*B - L1*L1)/(-2*B*L1));
theta_one = angle_beta + angle_alpha;
theta_two = atan2((y-L1*sin(theta_one)), (x-L1*cos(theta_one)));
}
這是我正在處理的代碼。
在一個具體的條件 - 像當x & y是10 & 10, 這個代碼存儲-1#IND00成theta_one & theta_two。
它看起來並不像任何字符或數字:(
毫無疑問,ATAN2/ACOS /東西都是問題。
但問題是,try和catch不起作用無論是 的Cuz的double變量已成功存儲 一些其中的值。
此外,以下計算從不抱怨 永不打破PROGR am!
我想迫使以某種方式使用該值,使整個程序崩潰...... 所以,我可以趕上這個錯誤的..
除了這個想法,我不知道怎麼我應該檢查這些 theta_one和theta_two變量是否存儲了這個瘋狂的值。
任何好主意?
預先感謝您..
咦? C中不允許嗎? - (我是C++的人) – Phrixus 2010-03-25 08:18:48
'try'和'catch'也是C++,而不是C. – dreamlax 2010-03-25 08:19:42
你的輸入是什麼?你如何印刷「怪異」的價值?看起來這可能是負無窮的表示。 – msw 2010-03-25 08:19:58