Как проверить неопределенное значение 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.