Heim > Backend-Entwicklung > C++ > Gleitkommaarithmetik und Assoziativität in C, C++ und Java

Gleitkommaarithmetik und Assoziativität in C, C++ und Java

王林
Freigeben: 2023-08-28 09:09:11
nach vorne
1302 Leute haben es durchsucht

Gleitkommaarithmetik und Assoziativität in C, C++ und Java

In C, C++ und Java verwenden wir Gleitkommazahlen, um einige mathematische Operationen auszuführen. Jetzt prüfen wir, ob Gleitkommazahlen den Assoziativitätsregeln folgen.

Die Antwort ist nein. In manchen Fällen folgen Gleitkommazahlen nicht den Assoziativitätsregeln. Hier sehen wir einige Beispiele.

Beispielcode

#include<iostream>
using namespace std;
main() {
   float x = -500000000;
   float y = 500000000;
   float z = 1;
   cout << "x + (y + z) is: " << x + (y + z) << endl;
   cout << "(x + y) + z is "<< (x + y) + z << endl;
}
Nach dem Login kopieren

Ausgabe

x + (y + z) is: 0
(x + y) + z is 1
Nach dem Login kopieren

Hier können wir sehen, dass die Ergebnisse nicht gleich sind, aber theoretisch können wir sagen, dass sie immer 1 sind. Nun stellt sich die Frage, wie geht das?

Im ersten Fall wird x + (y + z), (500000000 + 1) ausgeführt. Aber für Gleitkommazahlen Nach dem Runden wird wieder auf 500000000 umgerechnet. Fügen Sie nun -500000000 hinzu und es wird 0. Im zweiten Ausdruck ist der Wert (-500000000 + 500000000) = 0, dann wird 1 hinzugefügt, also das Endergebnis Das Ergebnis ist 1.

Wenn wir ganze Zahlen verwenden, geben beide Ausdrücke das gleiche Ergebnis zurück, nämlich 1.

Das obige ist der detaillierte Inhalt vonGleitkommaarithmetik und Assoziativität in C, C++ und Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage