2011-11-21 51 views
1

我想弄清楚一種方法來檢查一個未定義的斜率值,在這種情況下它將是垂直的。我曾嘗試使用NULL,但似乎並不奏效。如何檢查雙精度值的未定義值?

double Point::Slope(Point &p2) 
{ 
    double slop = 0; 
    slop = (y - p2.y)/(x - p2.x); 

    if (slop == NULL) 
    { 
     slop = 10e100; 
    } 

    return slop; 
} 
+1

您需要檢查您的問題並接受一些答案! – karlphillip

+0

這將有助於http://stackoverflow.com/questions/570669/checking-if-a-double-or-float-is-nan-in-c/570694#570694 – Hauleth

+0

你需要定義什麼會超出範圍的可接受的值,然後檢查。 –

回答

3

如果你指南(「不是數字」)與「未定義」,則應該避免通過檢查一個「/」操作的分母不爲零計算一個在第一地點,即。其次,你可以隨時查詢nan

#include <math.h> 
bool isnan(x); 

查看手冊頁。

+1

'isnan'不是一個標準函數,AFAICT。 –

0

我建議避免除以零一起(順便說一下......你爲什麼不叫呢slope代替slop?):

double Point::Slope(Point&p2) 
{ 
    double slope = 0; 
    double xDelta = x - p2.x; 
    double yDelta = y - p2.y; 

    if (xDelta != 0) 
    { 
     slope = yDelta/xDelta; 
    } 

    return slope; 
}