我想弄清楚一種方法來檢查一個未定義的斜率值,在這種情況下它將是垂直的。我曾嘗試使用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
你需要定義什麼會超出範圍的可接受的值,然後檢查。 –