Tengo :

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

Hay valores devueltos como -1.#IND. Aparte de eso, los valores positivos son normales, como 1.34543.

¿Por qué sucede esto? ¿Cómo puedo solucionarlo?

InformationsquelleAutor Chai | 2011-09-19

3 Comentarios

  1. 15

    Como Federico, dice, es el resultado de un ‘No es un Número‘ ser formateado por una aplicación creada con visual studio en windows. Juan D de Cook tiene un excelente referencia:

    Windows muestra un NaN como -1.#IND («IND» para «indeterminado»), mientras que Linux muestra nan.

    En resumen, si usted recibe 1.#INF o inf, buscar desbordamiento o división por cero. Si usted recibe 1.#IND o nan, busca las operaciones ilegales.

    Reloj hacia fuera para los truncamientos si haces cualquier tipo de formato con su cadena; me he encontrado cuestiones relacionadas con la cuando el manejo de este tipo de errores a mí mismo.

    • No estoy seguro acerca de 0/0 rendimiento NaN. Creo que es como cualquier otra división por cero en la que obtendrá una excepción de punto flotante desde el sistema operativo.
    • Con Visual Studio, 0 / 0, se produce una excepción. 0.0 / 0.0 devuelve NaN o lanza una excepción, el control que por una bandera. El valor predeterminado es que devuelve NaN.
    • Sí, exactamente. Y eso no es lo que la cita original se dijo. Mi punto es, ten cuidado con los peligros de la Wikipedia…
    • Tal vez.. …o tal vez es en una llamada de la biblioteca y de la biblioteca en silencio máscaras de la excepción, pero aún escupe NaN como por la OPs pregunta… ?
  2. 3

    En mi experiencia -1.#IND viene de los números imaginarios. Así, haciendo cout << sqrt(-1.); debe salida -1.#IND

Dejar respuesta

Please enter your comment!
Please enter your name here