Diferencia en la precisión de Double in Release mode/Debug Mode [duplicado]

Obtengo una diferencia en el valor de precisión después del punto decimal para el procesamiento doble en el modo de lanzamiento de MSVC y el modo de depuración.

Ex - Nota: - Doble relleno de datos; 1) registro (rellenado de datos) ==> #incluir

 Debug Mode   dataFilled =96.1588665998339850
 Release Mode dataFilled =96.1588665998339420

 Intended value is 96.1588665998339850

¿Alguien puede guiarme por qué obtengo valores diferentes en Release y Debug?

preguntado Oct 07 '14, 14:10

¿Podría deberse a que el modo de liberación y depuración usa diferentes asignadores? -

1 Respuestas

La representación binaria IEEE de números de coma flotante de doble precisión es válida solo para 15 dígitos decimales completos. Está imprimiendo 18. Parece que los dos resultados difieren en el valor del bit de mantisa menos significativo (de 53). Tal diferencia puede surgir fácilmente de las diferencias en el orden de las operaciones o el manejo de los resultados intermedios entre las dos configuraciones de compilación.

Si realmente necesita tanta precisión como la que pide, tendrá que buscar en una biblioteca matemática de precisión arbitraria. De lo contrario, acepte que la aritmética nativa de punto flotante de su máquina es imprecisa (como debe serlo en todas las máquinas). Puede ser mucho trabajo realizar operaciones aritméticas de extrema precisión en una computadora.

Como solución alternativa, VS puede tener opciones de compilación que puede configurar para hacer que su manejo de punto flotante en una compilación de lanzamiento sea más parecido a una compilación de depuración (probablemente por una pequeña penalización de rendimiento). Pero usar esa opción sería solo una tirita. Realmente debería usar un enfoque computacional en el que pueda confiar para obtener la precisión que necesita sin ningún truco.

Respondido 07 Oct 14, 14:10

Y si se trata de pruebas automatizadas, en la mayoría de los casos es incorrecto probar los valores exactos de los cálculos de punto flotante. En su lugar, debe probar que el resultado del cálculo está dentro de un delta aceptable del valor esperado. - John Bollinger

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.