In Java löst (Number/0) eine ArithmeticException aus, während (Number/0.0) = Infinity. Warum passiert das?ArithmeticException ausgelöst in Java
Antwort
Da IEEE-754 Fließkommazahlen eine Unendlichkeitsdarstellung haben, sind Ganzzahlen dies nicht.
Mit anderen Worten, jedes Bitmuster in int
stellt eine normale ganze Zahl dar; Gleitkomma-Werte sind etwas komplizierter mit +/- unendlich „keine Zahl“ (NaN) Werte normalisierten Werte, subnormale Werte usw.
Auch können Sie die JLS überprüfen, die sagt:
15.17.2 Division Operator
Wenn andererseits der Wert des Divisors in einer Ganzzahl-Division 0 ist, wird eine ArithmeticException ausgelöst.
Das Ergebnis einer Division Gleitkommazahl wird durch die Spezifikation des IEEE Arithmetik bestimmt: Wenn das Ergebnis nicht NaN ist, das Vorzeichen des Ergebnisses ist positiv, wenn beide Operanden das gleiche Vorzeichen, negativ, wenn die Operanden habe unterschiedliche Zeichen.
Die Division eines von Null verschiedenen endlichen Wertes durch eine Null führt zu einer vorzeichenbehafteten Unendlichkeit. Das Vorzeichen ergibt sich aus der oben genannten Regel.
Danke, mein Herr. Es hat sehr geholfen. – Mohit
Der IEEE-Gleitkomma-Standard gibt an, um fast alle modernen Prozessoren unterstützt, dass jede Gleitkomma-Rechenoperation, die von Null einschließlich der Division, ein gut definiertes Ergebnis hat. Der Standard unterstützt vorzeichenbehaftete Null sowie Unendlichkeit und NaN (keine Zahl). Es gibt zwei Nullen, +0 (positive Null) und -0 (negative Null) und dies beseitigt jegliche Mehrdeutigkeit beim Dividieren. In der IEEE 754-Arithmetik ist a ÷ +0 eine positive Unendlichkeit, wenn a positiv ist, eine negative Unendlichkeit, wenn a negativ ist, und NaN, wenn a = ± 0 ist. Die Unendlichkeitszeichen ändern sich, wenn sie durch -0 geteilt werden.
Ganzzahlige Division durch Null wird normalerweise anders gehandhabt als Gleitkomma, da für das Ergebnis keine Integer-Darstellung vorhanden ist. Einige Prozessoren erzeugen eine Ausnahme, wenn versucht wird, eine ganze Zahl durch Null zu teilen, obwohl andere einfach fortfahren und ein falsches Ergebnis für die Division erzeugen. Das Ergebnis hängt davon ab, wie Division implementiert wird, und kann entweder Null oder manchmal die größte mögliche ganze Zahl sein.
Danke, mein Herr. Es hat sehr geholfen. – Mohit
- 1. Dividing BigDecimals Ergebnisse in ArithmeticException
- 2. FindControl() -Methode löst ArithmeticException aus?
- 3. Try-multicatch mit ExceptionInInitializerError und ArithmeticException Verwirrung
- 4. Warum löst die Division von zwei BigDecimal-Zahlen in Java die ArithmeticException aus?
- 5. Warum wird die Ausnahme hier nicht ausgelöst?
- 6. ArithmeticException: "Nicht-abschließende Dezimal-Erweiterung; kein exakt darstellbares Dezimal-Ergebnis"
- 7. Java 7: IF Bedingung ausgelöst, wenn falsche
- 8. Werden Ereignisse ausgelöst, ausgelöst oder ausgelöst?
- 9. Spring (Java): Aspekt wird nicht in nichtlinearer Klassenhierarchie ausgelöst
- 10. Trigger ausgelöst in Perioden
- 11. CursorWindowAllocationException ausgelöst in SyncAdapter
- 12. Trigger ausgelöst, bedingt ausgelöst (MySQL/PHP)
- 13. Java - Wie überprüft man, welcher Exception-Typ ausgelöst wurde?
- 14. Selen java AbstractWebDriverEventListener Tracking-Ereignisse werden nicht ausgelöst
- 15. camel noop beim Neustart des Java-Prozesses - wird es ausgelöst?
- 16. Sellerie ausgelöst unerwartet LookUp Error
- 17. onActivityResult nicht in Android ausgelöst
- 18. Java Ausnahmen fangen Anfänger
- 19. Java Exception Handhabung Verständnis Problem
- 20. Wie jQuery in der Seitenansicht ausgelöst wird?
- 21. onBackPressed() - Methode in AppCompatActivity nicht ausgelöst
- 22. Was geschieht, wenn eine Ausnahme in einem Shutdown-Hook in Java ausgelöst wird
- 23. Kann ich warten, dass Quartz Jobs in der Reihenfolge ausgelöst werden, in der sie ausgelöst wurden?
- 24. PostAuthenticateRequest wird mehrmals ausgelöst
- 25. RaisePostBackEvent nicht ausgelöst
- 26. Wurde window.onload schon ausgelöst?
- 27. OnNavigatedTo wird nicht ausgelöst?
- 28. WÄHLEN, WO OleDbException ausgelöst
- 29. Application_Error() nicht ausgelöst
- 30. Verhindern, dass Klickereignis ausgelöst wird, wenn dblclick-Ereignis ausgelöst wird
Wenn das "floating-point" -Tag auf jede Frage über Fließkommazahlen angewendet wurde, hätten Sie ein weiteres goldenes Abzeichen! –
Danke, mein Herr. Es hat sehr geholfen. – Mohit