Как проверить неопределенное значение double?

Я пытаюсь выяснить способ проверки неопределенного значения наклона, и в этом случае он будет вертикальным. Я пробовал использовать NULL но это, похоже, не работает.

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

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

 return slop; 
}
3 ответа

Если вы имеете в виду nan ('not number') с "undefined", вы должны избегать вычислений в первую очередь, то есть путем проверки того, что знаменатель операции "/" не равен нулю. Во-вторых, вы всегда можете проверить на

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

см. страницы руководства или cppreference.


В C++, NULL == 0. Это не то, что вы ищете.

Возможно, это может помочь вам: http://www.gnu.org/s/hello/manual/libc/Infinity-and-NaN.html

Попробуйте функцию isnan (float).


Я бы рекомендовал избегать разделения на ноль все вместе (кстати... почему бы вам не назвать его slope вместо slop?):

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

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

 return slope; 
}

licensed under cc by-sa 3.0 with attribution.