Почему возвращаемые значения этих двойников -1. # IND? - PullRequest
16 голосов
/ 19 сентября 2011

у меня есть:

double score = cvMatchContourTrees( CT1, CT2, CV_CONTOUR_TREES_MATCH_I1, 0.0 );
        cout<<score<<endl;

Есть значения, возвращаемые как -1. # IND. Помимо этого, положительные значения являются нормальными, как 1,34543.

Почему это происходит? Как мне это решить?

Ответы [ 3 ]

15 голосов
/ 20 сентября 2011

Как говорит Фредерик, это результат ', а не числа ', отформатированного приложением, созданным в Visual Studio на Windows.Джон Д. Кук имеет превосходную ссылку :

Windows отображает NaN как -1. # IND ("IND" для "неопределенного"), в то время как Linux отображает nan.

...

Короче говоря, если вы получаете 1. # INF или inf, ищите переполнение или деление на ноль.Если вы получаете 1. # IND или nan, ищите недопустимые операции.

Следите за усечениями, если вы выполняете какое-либо форматирование со своей строкой;Я сам сталкивался с проблемами при обработке подобных ошибок.

5 голосов
/ 19 сентября 2011
std::cout << (0/0.f);
// Output: -1.#IND

Это NaN .

3 голосов
/ 18 июня 2012

По моему опыту -1.#IND происходит от мнимых чисел. Таким образом, cout << sqrt(-1.); должно вывести -1.#IND

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...