Frage

In Java (Anzahl / 0) löst eine ArithmeticException while (Anzahl / 0.0) = Unendlichkeit. Warum geschieht das?

War es hilfreich?

Lösung

Da IEEE-754-Gleitkommazahlen eine Darstellung für die Unendlichkeit, während ganze Zahlen nicht.

Mit anderen Worten stellt jedes Bitmuster in int eine normale ganze Zahl ist; Fließkommazahlen sind eher kompliziert mit +/- unendlich „keine Zahl“ (NaN) Werte normalisierten Werte, subnormale Werte etc.

Andere Tipps

Von hier

Der IEEE-Gleitkomma-Standard, unterstützt von fast alle modernen Prozessoren, gibt an, dass jede Gleitkomma-Rechenoperation, einschließlich Division durch Null, ein gut definiertes Ergebnis hat. Der Standardträger unterzeichnete Null sowie Unendlich und NaN (keine Zahl). Es gibt zwei Nullen, +0 (positive Null) und -0 (negative Null), und dies entfernt jegliche Mehrdeutigkeit beim Dividieren. In IEEE 754-Arithmetik, a ÷ +0 positiv Unendlich ist, wenn eine positive, negative Unendlichkeit, wenn eine negativ ist, und NaN wenn a = ± 0. Die Unendlichkeit Zeichen ändern, wenn Division durch -0 statt.

Integer Division durch Null wird in der Regel anders als Gleitkomma gehandhabt, da es keine Ganzzahl-Darstellung für das Ergebnis. Einige Prozessoren erzeugen eine Ausnahme, wenn versucht wird, eine ganze Zahl von Null zu teilen, obwohl andere werden einfach weiter und ein falsches Ergebnis für die Division generieren. Das Ergebnis hängt davon ab, wie Division implementiert ist, und kann entweder Null oder manchmal die größte mögliche ganze Zahl ist.

Sie können auch die JLS überprüfen, die sagt:

15.17.2 Abteilung Operator
Auf der anderen Seite, wenn der Wert des Divisors in einer ganzzahligen Division 0 ist, dann ein ArithmeticException geworfen wird.

Das Ergebnis einer Gleitkomma-Teilung durch die Spezifikation der ermittelten IEEE-Arithmetik: Wenn das Ergebnis nicht NaN ist, ist das Vorzeichen des Ergebnisses positiv, wenn beide Operanden das gleiche Vorzeichen, negativ, wenn die Operanden unterschiedliche Vorzeichen.
Aufteilung eines Nicht-Null-endlichen Wert durch eine Null führt zu einer signierten Unendlichkeit. Das Vorzeichen wird durch die Regel oben angegeben bestimmt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top