2011-11-21 50 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; 
}