Was diese drei spezielle bedeuten Gleitkommawerte: positive Unendlichkeit, negative Unendlichkeit, NaN?

StackOverflow https://stackoverflow.com/questions/1007586

Frage

Wie können wir sie in unseren Codes verwenden, und was bewirkt, dass NaN (keine Zahl)?

War es hilfreich?

Lösung

Diese kann eine gute Referenz, wenn Sie mehr über Floating lernen wollen Punktzahl in Java.

Positive Unendlichkeit ist eine positive Zahl so groß, dass es nicht normal dargestellt werden kann. Negative Unendlichkeit ist eine negative Zahl so groß, dass es nicht normal dargestellt werden kann. NaN bedeutet "Not a Number" und ergibt sich aus einer mathematischen Operation, die wie keine Zahlen- ergeben 0 von 0 geteilt wird.

In Java, Double und Klassen Float haben beide Konstanten alle drei Fälle darzustellen. Sie sind POSITIVE_INFINITY, NEGATIVE_INFINITY und NaN.

Plus bedenken Sie:

double a = Math.pow(10, 600) - Math.pow(10, 600); //==NaN

Mathematisch kann jeder sieht es 0 ist aber für die Maschine, es ist ein „Infinity“ - „Infinity“ (von gleichem Rang), die in der Tat ist NaN.

Andere Tipps

  • Positive Unendlichkeit bedeutet in positiver Richtung bis ins Unendliche gehen -. Geht in Werte, die größer und größer in ihrer Größe in der positiven Richtung sind
  • Negative Unendlichkeit bedeutet, in der negativen Richtung bis ins Unendliche gehen -. Geht in Werte, die größer und größer in ihrer Größe in der negativen Richtung sind
  • Not-a-Number (NaN) ist etwas, das nicht definiert ist, wie das Ergebnis von 0/0.

Und die Konstanten aus der Beschreibung des Float Klasse:

Weitere Informationen finden Sie im IEEE-754-Seite in Wikipedia .

Hier ist ein kleines Programm, die drei Konstanten zu veranschaulichen:

System.out.println(0f / 0f);
System.out.println(1f / 0f);
System.out.println(-1f / 0f);

Ausgabe:

NaN
Infinity
-Infinity
  • 1/0 wird in positiver Unendlichkeit zur Folge hat.
  • 0/0 in Nan führen. Sie NaN wie jede andere Nummer verwenden können, zB: NaN + NaN = NaN, NaN + 2,0 = NaN
  • -1/0 wird in negativer Unendlichkeit zur Folge hat.

Unendlich (in Java) bedeutet, dass das Ergebnis einer Operation, wie eine extrem große positive oder negative Zahl sein wird, dass es nicht normal wiedergegeben werden.

Die Idee ist, spezielle Zahlen darzustellen, die auf natürliche Weise von Operationen auf „normale“ Zahlen ergeben können. Man könnte unendlich (sowohl positiv als auch negativ) als „Überlauf“ des Gleitkommadarstellung sehen, ist die Idee, dass in zumindest einigen Bedingungen zu sein, mit einem solchen Wert von einer Funktion zurückgegeben noch sinnvolles Ergebnis ergibt. Sie haben immer noch einige Bestell Eigenschaften, zum Beispiel (damit sie nicht Schraube Operationen Sortierung, zum Beispiel).

Nan ist ganz besonders: wenn x Nan ist, x == x falsch ist (das ist tatsächlich ein Weg für nan, zumindest in C zu testen, wieder). Dies kann sehr verwirrend sein, wenn Sie zu Floating-Point-Besonderheiten nicht verwendet werden. Es sei denn, Sie wissenschaftliche Berechnungen zu tun, würde ich sagen, dass mit Nan durch eine Operation wieder ein Fehler ist, zumindest in den meisten Fällen, die in den Sinn kommen. Nan kann für verschiedene Operationen kommen: 0/0, inf - inf, inf / inf, 0 * inf. Nan keine Bestellung Eigenschaft hat, auch nicht.

Sie können sie wie jede andere Nummer verwenden:

z:

float min = Float.NEGATIVE_INFINITY;
float max = Float.POSITIVE_INFINITY;
float nan = Float.NaN;
  

Positive Unendlichkeit ist eine positive Zahl so groß, dass es nicht sein kann,   normal dargestellt. Negative Unendlichkeit ist eine negative Zahl so groß,   dass es normalerweise nicht dargestellt werden kann. NaN bedeutet "Not a Number" und   Ergebnisse aus einer mathematischen Operation, die keine Nummer hat ergeben -   wie Dividieren 0 von 0.

Dies ist keine vollständige Antwort (oder nicht ausreichend geklärt) - bedenken Sie:

double a = Math.pow(10,600) - Math.pow(10,600); //==NaN

mathematisch jeder sehen kann es 0 ist aber für die Maschine ist es ein „Infinity“ - „Infinity“ (von derselben Reihenfolge) Hexe ist in der Tat NaN ...

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