我想弄清楚一种方法来检查一个未定义的斜率值,在这种情况下它将是垂直的。我曾尝试使用NULL
,但似乎并不奏效。如何检查双精度值的未定义值?
double Point::Slope(Point &p2)
{
double slop = 0;
slop = (y - p2.y)/(x - p2.x);
if (slop == NULL)
{
slop = 10e100;
}
return slop;
}
我想弄清楚一种方法来检查一个未定义的斜率值,在这种情况下它将是垂直的。我曾尝试使用NULL
,但似乎并不奏效。如何检查双精度值的未定义值?
double Point::Slope(Point &p2)
{
double slop = 0;
slop = (y - p2.y)/(x - p2.x);
if (slop == NULL)
{
slop = 10e100;
}
return slop;
}
如果你指南(“不是数字”)与“未定义”,则应该避免通过检查一个“/”操作的分母不为零计算一个在第一地点,即。其次,你可以随时查询nan
#include <math.h>
bool isnan(x);
查看手册页。
'isnan'不是一个标准函数,AFAICT。 –
在C++中,NULL == 0.这不是你所寻求的。
也许这可以帮助你:http://www.gnu.org/s/hello/manual/libc/Infinity-and-NaN.html
尝试isnan(浮动)的功能。
我建议避免除以零一起(顺便说一下......你为什么不叫呢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;
}
您需要检查您的问题并接受一些答案! – karlphillip
这将有助于http://stackoverflow.com/questions/570669/checking-if-a-double-or-float-is-nan-in-c/570694#570694 – Hauleth
你需要定义什么会超出范围的可接受的值,然后检查。 –