Heim >Backend-Entwicklung >C++ >Warum führt die Ganzzahldivision in C bei Verwendung von Doubles zu unerwarteten Null-Ergebnissen?
Verwirrung des Divisionsergebnisses: Warum ergibt 3/5 Null, obwohl es als Double gespeichert wird?
Beim Versuch, eine Division durchzuführen (/) In C ist es wichtig, die beteiligten Datentypen zu verstehen. Die Division von Ganzzahlen (int-Typen) führt zu einer Ganzzahldivision, bei der der Bruchteil verworfen wird. Dies kann jedoch beim Umgang mit Doubles zu unerwarteten Ergebnissen führen.
Beispiel:
Beachten Sie den folgenden Code:
#include <iostream> int main() { double f = 3 / 5; std::cout << f; return 0; }
Unerwartete Ausgabe:
Zur Überraschung vieler gibt dieser Code 0 statt der erwarteten aus 0.6.
Erklärung:
Der Divisionsoperator (/) führt eine Ganzzahldivision durch, da sowohl 3 als auch 5 ganze Zahlen sind. Um dies zu beheben, stellen Sie sicher, dass ein Operand eine reelle Zahl ist. Dies kann durch Hinzufügen eines Dezimalpunkts erreicht werden, wie in dieser korrigierten Version zu sehen ist:
double f = 3.0 / 5;
Diese Änderung zwingt den Compiler zur Durchführung einer Gleitkommadivision, was korrekt zu 0,6 führt.
Fazit:
Bei der Durchführung einer Division mit Doppeln ist es wichtig, die beteiligten Datentypen zu berücksichtigen. Durch die Verwendung von Gleitkommaoperanden wird sichergestellt, dass das Ergebnis seinen Bruchteil beibehält und zum gewünschten Ergebnis führt.
Das obige ist der detaillierte Inhalt vonWarum führt die Ganzzahldivision in C bei Verwendung von Doubles zu unerwarteten Null-Ergebnissen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!