Как проверить, является ли значение 1. # INF0000?

Короче, у меня есть этот код:

vec3 contribX1 = Sample(O, D, 0);
if (std::isinf(contribX1.x)){
..do something..
}

Согласно моей отладке у меня иногда есть бесконечное значение, которое возвращается Sample метод, и я должен решить это. Но прежде чем сделать это, мне нужны инструменты для правильной отладки. Итак, я искал вокруг, и я нашел это std::isinf() это должно вернуть мне бул. К сожалению, кажется, я никогда не вхожу в это IF состояние, даже если сразу после того, как я смогу проверить contribX1.x и это на самом деле 1.#INF0000, Что я делаю неправильно?

РЕДАКТИРОВАТЬ: компилятор cl.exe .. Я использую Visual Studio 2013

2

Решение

Ты можешь использовать isfinite чтобы проверить, является ли значение действительным и непостоянным (то есть начальным) значением:

if (!std::isfinite(contribX1.x)){

должен работать для вас, я думаю, что проблема здесь в том, что существуют различные значения, используемые для представления положительных и отрицательных бесконечных значений наряду с NaNВ вашей ситуации, я думаю, что использование этого теста должно быть хорошо.

Я не знаю вашу платформу, но для Windows этот вопрос мне помог: std :: isfinite в MSVC

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]