Pregunta

Recientemente, a veces (raramente) cuando exportamos datos desde nuestra aplicación, el registro de exportación contiene valores flotantes que se parecen a "-1. # J". No he podido reproducirlo, así que no sé cómo se ve el flotador en binario o cómo Visual Studio lo muestra.

Intenté mirar el código fuente de printf, pero no encontré nada (aunque no estoy 100% seguro de haber buscado la versión correcta ...).

He intentado buscar en Google, pero parece que Google arroja cualquier #. Y no puedo encontrar ninguna lista de errores de flotación.

¿Fue útil?

Solución

Puede ser infinito negativo o NaN (no un número). Debido al formato en el campo, printf no diferencia entre ellos.

Probé el siguiente código en Visual Studio 2008:

double a = 0.0;
printf("%.3g\n", 1.0 / a);  // +inf
printf("%.3g\n", -1.0 / a); // -inf
printf("%.3g\n", a / a);    //  NaN

que da como resultado el siguiente resultado:

1.#J
-1.#J
-1.#J

al eliminar el especificador de formato .3 se obtiene:

1.#INF
-1.#INF
-1.#IND

así que está claro que 0/0 da NaN y -1/0 da infinito negativo (NaN, -inf y + inf son los únicos números de punto flotante '' erróneos '', si recuerdo correctamente)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top