En Java, (Number/0) arroja una ArithmeticException mientras (Number/0.0) = Infinity. ¿Por qué sucede esto?ArithmeticException lanzada en Java
Respuesta
Porque los números de coma flotante IEEE-754 tienen una representación para infinito, mientras que los enteros no.
En otras palabras, cada patrón de bits en int
representa un número entero normal; valores de coma flotante son bastante más complicado con +/- infinito, "no es un número" valores (NAN), valores normalizados, valores subnormales etc.
También puede comprobar el JLS, que dice:
15.17.2 Operador de división
Por otro lado, si el valor del divisor en una división entera es 0, entonces se arroja una ArithmeticException .
El resultado de una división de punto flotante es determinado por la especificación de aritmética IEEE: Si el resultado no es NaN, el signo del resultado es positivo si ambos operandos tienen el mismo signo, negativo si los operandos tener diferentes signos
La división de un valor finito distinto de cero por cero da como resultado un infinito con signo. El signo está determinado por la regla establecida anteriormente.
Gracias, señor. Ayudó mucho. – Mohit
El estándar IEEE de punto flotante, el apoyo de casi todos los procesadores modernos, especifica que cada punto de operación aritmética flotante, incluyendo la división por cero, tiene un resultado bien definido. El estándar admite cero firmado, así como infinito y NaN (no un número). Hay dos ceros, +0 (cero positivo) y -0 (cero negativo) y esto elimina cualquier ambigüedad al dividir. En aritmética IEEE 754, ÷ +0 es infinito positivo cuando a es positivo, infinito negativo cuando a es negativo y NaN cuando a = ± 0. Los signos de infinito cambian cuando se divide por -0 en su lugar.
La división de enteros por cero generalmente se maneja de forma diferente a coma flotante ya que no hay una representación entera para el resultado. Algunos procesadores generan una excepción cuando se intenta dividir un entero por cero, aunque otros simplemente continuarán y generarán un resultado incorrecto para la división. El resultado depende de cómo se implemente la división, y puede ser cero o, a veces, el entero más grande posible.
Gracias señor. Ayudó mucho. – Mohit
- 1. ArithmeticException lanzada durante BigDecimal.divide
- 2. BigDecimals resultados en ArithmeticException
- 3. En Java, ¿cómo puedo validar una excepción lanzada con JUnit?
- 4. controlar una excepción lanzada en un generador
- 5. excepción lanzada en la captura y finalmente la cláusula
- 6. Java: Excepción lanzada en el constructor, ¿se puede seguir creando mi objeto?
- 7. ¿A dónde va el texto en una excepción lanzada?
- 8. GWT en IE8 - Excepción lanzada y no detectada
- 9. Ninject Excepción intermitente lanzada relacionada con OnePerRequestModule
- 10. asp.net mvc 3 obtener excepción lanzada
- 11. StackOverflowException lanzada en sistemas x64; funciona correctamente en x86
- 12. SmoothStreamingMediaElement.Play() - excepción lanzada, pero el jugador comienza
- 13. ¿Cómo manejar la excepción lanzada desde Eliminar?
- 14. java mail api: excepción lanzada que dice java.lang.SecurityException: acceso a la sesión predeterminada denegada
- 15. Excepción de captura lanzada en una condición forecech
- 16. Excepción de depuración lanzada en Objective C y XCode
- 17. Capturando una excepción lanzada en una devolución de llamada asíncrona
- 18. Java Timer clase: tareas temporizador de parada para ejecutar si en una de las tareas excepción es lanzada
- 19. Agregar un mensaje personalizado a la excepción lanzada mientras se mantiene el seguimiento de la pila en Java
- 20. excepción de jersey solo lanzada cuando las dependencias se ensamblan en un solo contenedor
- 21. Programa de bloqueo de dll de terceros sin excepción lanzada
- 22. Mysqldump lanzada por cron y contraseña de seguridad
- 23. ¿Cómo atrapa una excepción lanzada de un servicio web?
- 24. OutOfMemoryException lanzada mientras la memoria aún está disponible
- 25. La captura de un SoapException lanzada por un servicio web
- 26. Cómo coger excepción lanzada al inicializar un miembro estático
- 27. servicio de Android no lanzada por prueba unitaria
- 28. ¿La excepción lanzada en el bloque de catch será atrapada por bloques catch posteriores?
- 29. ¿Por qué recibo una excepción lanzada cuando ejecuto Response.Redirect()?
- 30. Desglose de la fuerza en cualquier excepción lanzada en el programa
Si se aplicara la etiqueta 'floating-point' a cada pregunta sobre los números de punto flotante, ¡habría tenido otra insignia de oro! –
Gracias señor. Ayudó mucho. – Mohit