Heim >Backend-Entwicklung >C++ >Warum führt die Ganzzahldivision in C bei Verwendung von Doubles zu unerwarteten Null-Ergebnissen?

Warum führt die Ganzzahldivision in C bei Verwendung von Doubles zu unerwarteten Null-Ergebnissen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-02 05:46:12316Durchsuche

Why Does Integer Division in C   Produce Unexpected Zero Results When Using Doubles?

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!

Stellungnahme:
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