如何检查double的未定义值?

时间:2011-11-21 23:05:55

标签: c++ undefined

我试图找出一种方法来检查斜率的未定义值,在这种情况下它将是垂直的。我尝试过使用NULL,但这似乎不起作用。

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

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

   return slop;   
}

3 个答案:

答案 0 :(得分:3)

如果你的意思是“未定义”的nan('不是数字'),你应该首先避免计算一个,即通过检查'/'操作的分母不为零。其次,您可以随时检查纳米

#include <cmath>
bool std::isnan(x);   // since C++11
bool isnan(x);        // pre C++11, from the C math library, defined as macro

请参阅手册页,或cppreference

答案 1 :(得分:1)

在C ++中,NULL == 0.这不是你想要的。

也许这可以帮到你:http://www.gnu.org/s/hello/manual/libc/Infinity-and-NaN.html

尝试使用isnan(float)函数。

答案 2 :(得分: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;   
}