He configurado Visual Studio para lanzar excepciones de coma flotante a través de la función _controlfp. Esto funciona para NAN e INF, pero no para QNAN. Es decir. Los NaN silenciosos no provocan una excepción. ¿Hay alguna función, o opción de configuración para Visual Studio 2008/2010, que obligue a los QNAN a ser NAN, para que generen excepciones?Fuerza a todos QNaN para que sea NaN (SNaN) normal, por lo que se lanzan excepciones
Respuesta
Algunos consejos útiles, aunque nunca he hecho ni siquiera remotamente algo como esto:
Leer: http://www.cisl.ucar.edu/docs/trap.error/errortypes.html
La búsqueda resultante en el Internet (que realmente he sólo pasamos unos 30 segundos en) , me lleva a creer que esto normalmente está habilitado con una opción de compilación.
Sin embargo, también parece recordar que dicha habilitación/inhabilitación de capturas puede especificarse programáticamente, y especialmente en Windows, esto se puede hacer prácticamente con cualquier programa, como cuando se utiliza una impresora para imprimir. Además, si cambia esta opción mediante programación, vuelva a establecer el valor anterior tan pronto como sea posible; de lo contrario, si las personas de .NET intentan usar su código, es posible que tengan problemas.
(En otras palabras, el uso de _controlfp podría ser anulado por alguna otra rutina, suponiendo que es de hecho el enfoque correcto a utilizar)
Véase también Visual Studio C++ 2008/2010 - break on float NaN
- 1. C# que define explícitamente qué excepciones se lanzan
- 2. Rendimiento cuando no se lanzan excepciones (C++)
- 3. Quiero que la tarea maneje las excepciones que se lanzan, pero me es difícil evitar que lleguen a la matriz
- 4. Práctica recomendada para manejar excepciones, que se lanzan dentro del bloque catch, en un hilo. (.NET)
- 5. API para depósito directo (ACH, EFT, lo que sea)
- 6. ¿Por qué no se está ejecutando en un espacio constante (y cómo lo hago para que así sea)?
- 7. Lo que hace que algo sea iterable en python
- 8. Reventado silencioso NaN
- 9. Buscando un algoritmo que no sea "fuerza bruta" para eliminar las áreas que se cruzan de una colección de Rectos
- 10. lo que se utiliza para ContentProviderOperation
- 11. Actualización ASP.NET MVC3 - "Intento por método [lo que sea] para acceder al método System.Web.Mvc.Controller.View (...) failed"
- 12. ¿NaN es igual a NaN?
- 13. ¿Por qué no hay editores de texto enriquecido WYSIWYG en Flash/Silverlight/Lo que sea?
- 14. Lo que hace __contains__ hacer, lo que se puede llamar a la función __contains__
- 15. ¿Cómo hacer que un TFrame (y todo lo que contiene) sea parcialmente transparente?
- 16. redondeando un número para que sea divisible por 5
- 17. Idioma de excepciones de fuerza en inglés
- 18. ¿Se puede configurar SQLAlchemy para que no sea bloqueante?
- 19. ¿Cómo decirle a NLog que registre excepciones?
- 20. ActiveRecord: haga que todos los campos de texto tengan llamadas antes de guardarlos, a menos que se especifique lo contrario
- 21. rsync imprime "omisión de archivos no regulares" para lo que parece ser un directorio normal
- 22. ¿Hay una sentencia condicional html para todo lo que no sea Outlook?
- 23. Lo que se entiende por 'MyType = Int => Boole'
- 24. extjs: lo que es bueno para xtype
- 25. Lo que separa a un DSL de Ruby de una API normal
- 26. comparando matrices numpy que contienen NaN
- 27. 1. Error # QNAN C++
- 28. ¿Qué hace que Git sea mejor que Subversion para fusionarse?
- 29. ¿Cómo puedo hacer que mi formulario sea transparente, pero no lo que hago?
- 30. ¿Configurar nodo para que sea visible externamente?
espero que la respuesta sea 'no' pero estoy muy interesado –
Otra respuesta que puede serle útil: http://stackoverflow.com/questions/2769814/how-do-i-use-try-catch-to-catch-floating-point-errors/2769889#2769889 – George
@George: gracias , eso fue realmente útil – Dave