Heim > Artikel > Computer-Tutorials > Eingehende Analyse von Gleitkommaoperationen vom Typ Double in JAVA
doppeltes f=0,0005;
double i=3;
double d=f*i;
doppelt f1=0,0005;
double j=3;
double d1=f1*j;
if(d==d1){
System.out.println("aaa");
} Der grundlegende Datentyp in Java wird als automatische Variable bezeichnet. Da die Datengröße und die Lebensdauer von Literalwerten bekannt sind, werden sie aus Geschwindigkeitsgründen auf dem Stapel abgelegt Die Daten in können beispielsweise gemeinsam genutzt werden: int a=3 int b=3. Der Compiler erstellt zunächst einen Verweis auf die Variable a auf dem Stapel und sucht dann nach der Adresse mit a Literalwert gleich 3. Wenn nicht, wird eine Adresse zum Speichern des Literalwerts 3 geöffnet und dann int b=3 verarbeitet, nachdem die Anwendung mit der Variablen b erstellt wurde, um festzustellen, ob eine Adresse mit dem Literalwert 3 vorhanden ist. Jetzt zeigt es auf die Adresse 3. Zu diesem Zeitpunkt ist die Verwendung von == (bei der Beurteilung, ob die Adressen identisch sind) True
1. Gleitkommaleistung, früher Coprozessor genannt, 486 war vorher nicht in der CPU enthalten (8086~8087, 80286~80287, 80386~80387=80386DX, 80486SX~80487=80486DX, 586=586+587… ...) Gleitkomma-Arithmetik ist eine hochpräzise Rechenmethode, die hauptsächlich in der Wissenschaft und im Multimediabereich eingesetzt wird.
2. Es kann als eine Operationsmethode verstanden werden, bei der der Dezimalpunkt verschoben werden kann. Aktuelle Geschwindigkeit AMD>>Inter
3. Gleitkommazahlen beziehen sich auf rationale Zahlen mit begrenzten Dezimalstellen, wie zum Beispiel -10,8, 0,00, 25,01 usw.
4. Gleitkommaoperation, das Ergebnis ist eine Gleitkommazahl und der Dezimalteil des Berechnungsergebnisses wird beibehalten.
Zum Beispiel: Bei Verwendung der Gleitkomma-Arithmetik ist 100,0 ÷ 3,0 = 33,33333333.
5. Wenn beispielsweise eine Kugel die Wand trifft und ein Stück Erde herunterfällt, kann bei starken Gleitkommaberechnungen auch der fallende Staub angezeigt werden.
Ich hoffe, adoptiert zu werden
3,14 ist einfache Genauigkeit und 3,14159 ist doppelte Genauigkeit.
Der Unterschied zwischen den beiden ist wie folgt:
1. Verschiedene Referenzen
1. Einfache Genauigkeit: bezieht sich auf eine Möglichkeit für Computer, Näherungen reeller Zahlen auszudrücken.
2. Doppelte Genauigkeit: Dieser Datentyp ähnelt dem Datentyp mit einfacher Genauigkeit (Float), weist jedoch eine höhere Genauigkeit als Float auf.
2. Unterschiedlicher belegter Raum
1. Einfache Genauigkeit: Der Bereich reicht von -3,402823E38 bis -1,401298E-45, wenn die Zahl negativ ist, und von 1,401298E-45 bis 3,402823E38, wenn die Zahl positiv ist.
2. Doppelte Genauigkeit: Der Typ mit doppelter Genauigkeit belegt 8 Byte (64 Bit) Speicherplatz und sein Wertebereich liegt zwischen -1,79769313486232E308 und 1,79769313486232E308.
3. Verschiedene Eigenschaften
1. Einfache Genauigkeit: Wenn der Wert kleiner als der oben genannte Wert ist, geht die Genauigkeit aufgrund der Verringerung der Anzahl der signifikanten Stellen der Mantisse (wie in IEEE 754 angegeben) allmählich verloren, oder einige Systeme verwenden den Wert direkt 0, um den Verarbeitungsprozess zu vereinfachen.
2. Doppelte Genauigkeit: Der beim Kompilieren belegte Speicherplatz variiert je nach Compiler. Es handelt sich um einen Double-Float-Datentyp, einen Variablentyp, der echte Variablen in C/C++ darstellt.
Referenzquelle: Encyclopedia Single Precision
Referenzquelle: Encyclopedia-Double Precision Floating Point
Der Gleitkommawert wird durch Multiplikation einer Ganzzahl oder Festkommazahl (also der Mantisse) mit einer ganzzahligen Potenz einer bestimmten Basis (normalerweise 2 bei Computern) erhalten. Diese Darstellungsmethode ähnelt der wissenschaftlichen Notation mit Basis 10.
Die Gleitkommazahl a wird durch zwei Zahlen m und e dargestellt: a = m * b^e (b hoch e).
In jedem solchen System wählen wir eine Basis b (die Basis des Notationssystems) und eine Genauigkeit p (d. h. wie viele Bits für die Speicherung verwendet werden sollen). m (d. h. die Mantisse) ist eine Anzahl von p Ziffern in der Form ±d.ddd...ddd (jedes Bit ist eine Ganzzahl zwischen 0 und b-1, einschließlich 0 und b-1). Wenn das erste Bit von m eine ganze Zahl ungleich Null ist, wird m als normalisiert bezeichnet.
Einige Beschreibungen verwenden ein separates Vorzeichenbit (s steht für + oder -), um positiv oder negativ anzuzeigen, daher muss m positiv sein. e ist der Exponent.
Wir können diese 3 Methoden verwenden, um Gleitkommazahlen darzustellen:
1. BCD-Code.
2. Die Exponentencode-Mantissendarstellung.
3. Wir können die zweite Methode umwandeln, um eine bessere Methode zu erhalten. Verschieben Sie zuerst den Dezimalpunkt einer Gleitkommazahl an das Ende und drücken Sie ihn mit N = M * RC, R = 10 aus. Konvertieren Sie dann M in binäres B, verwenden Sie dann C als Exponentencode und verwenden Sie B als Mantisse zum Ausdruck es unter Verwendung der Exponentencode-Mantissenmethode.
Zum Beispiel: 3,14159=314159*10^(-5).
314159 wird binär als 1001100101100101111 dargestellt.
Mit dieser Methode kann nicht nur der Wert von Gleitkommazahlen genau dargestellt werden, sondern auch der Speicherplatz voll ausgenutzt werden.
Erweiterte Informationen:
Gleitkommaeinheit (FPU)
Gleitkommaoperationen unterscheiden sich von Ganzzahloperationen, daher sind die Recheneinheiten natürlich unterschiedlich. Frühe Gleitkommaprozessoren erschienen als „externe Co-Prozessoren“ für die CPU. x87-FPU bezieht sich speziell auf die Gleitkomma-Coprozessor-Architektur, die mit x86-Prozessoren verwendet wird.
Hier sind folgende Punkte:
1. Gleitkommaregister nehmen eine Stapelstruktur an.
Die Tiefe beträgt 8 und die Breite 80 Bit, also 8 80-Bit-Register.
Die Namen sind ST(0) ~ ST(7), die Oberseite des Stapels ist ST(0) und die Zahlen sind jeweils 0 ~ 7.
2. Alle Gleitkommaoperationen werden mit erweiterter 80-Bit-Präzision ausgeführt.
3. Gleitkommazahlen werden zwischen Gleitkommaregistern und Speicher übertragen.
(1) Variablen vom Typ Float, Double und Long Double werden im Speicher mit einfacher, doppelter und erweiterter Präzision gemäß IEEE 754 dargestellt und belegen jeweils 32 Bit, 64 Bit und 96 Bit (die ersten 16 Bit sind ungültig). .
(2) Variablen vom Typ Float, Double und Long Double werden alle mit erweiterter 80-Bit-Genauigkeit in Gleitkommaregistern dargestellt.
(3) Vom Gleitkommaregister zum Speicher: Das 80-Bit-Format mit erweiterter Genauigkeit wird in 32-Bit oder 64-Bit konvertiert.
(4) Vom Speicher zum Gleitkommaregister: 32-Bit- oder 64-Bit-Konvertierung in das 80-Bit-Format mit erweiterter Genauigkeit.
Referenzquelle: Encyclopedia-Floating Point
Enzyklopädie-Gleitkommadarstellung
Das obige ist der detaillierte Inhalt vonEingehende Analyse von Gleitkommaoperationen vom Typ Double in JAVA. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!