Heim >Backend-Entwicklung >C++ >Wie vermeide ich das Abschneiden ganzer Zahlen bei der C-Float-Division?

Wie vermeide ich das Abschneiden ganzer Zahlen bei der C-Float-Division?

DDD
DDDOriginal
2024-11-11 21:06:031038Durchsuche

How to Avoid Integer Truncation in C   Float Division?

So erzeugen Sie ein Float-Ergebnis aus einer Ganzzahldivision

In C schneidet die Ganzzahldivision das Ergebnis ab, selbst wenn die Ausgabe a zugewiesen ist Float-Variable. Um diese Kürzung zu verhindern, müssen die Operanden explizit in Gleitkommazahlen umgewandelt werden:

float ans = (float)a / (float)b;

In diesem Code:

  • a und b sind Ganzzahlen und ans ist eine Gleitkommazahl.
  • Der Ausdruck (a / b) führt eine Ganzzahldivision durch und das Ergebnis wird auf eine Ganzzahl (3) gekürzt.
  • Die Umwandlung (float)a wandelt a in eine Gleitkommazahl (10,0) um.
  • Die Umwandlung (float)b wandelt b in ein Float (3.0) um.
  • Der Ausdruck ((float)a / (float)b) führt eine Gleitkommadivision durch und erzeugt ein Float-Ergebnis (3.000). ).
  • Dieses Ergebnis wird dann ans zugewiesen.

Durch die Umwandlung der Operanden in Gleitkommazahlen bleibt die Ausgabe der Division als Gleitkommazahl erhalten, was zu der gewünschten Genauigkeit führt:

3
3.333

Das obige ist der detaillierte Inhalt vonWie vermeide ich das Abschneiden ganzer Zahlen bei der C-Float-Division?. 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