Heim > Backend-Entwicklung > C++ > Warum führt die Ganzzahldivision in C zu Null, wenn 3 durch 5 als Doppel dividiert wird?

Warum führt die Ganzzahldivision in C zu Null, wenn 3 durch 5 als Doppel dividiert wird?

Barbara Streisand
Freigeben: 2024-12-02 12:33:12
Original
439 Leute haben es durchsucht

Why Does Integer Division in C   Result in Zero When Dividing 3 by 5 as Doubles?

Anomalie der Gleitkommadivision: Warum ergibt (3/5) Null in doppelter Genauigkeit?

Bei der Durchführung arithmetischer Operationen auf Gleitkommazahlen Zahlen stoßen Programmierer oft auf überraschende Ergebnisse. Eine solche Anomalie tritt beim Divisionsoperator (/) auf. Obwohl Zahlen als Gleitkommawerte mit doppelter Genauigkeit gespeichert werden, kann eine einfache Division wie (3/5) zur unerwarteten Ausgabe von Null führen.

Dieses Verhalten ergibt sich aus der Tatsache, dass sowohl 3 als auch 5 ganze Zahlen sind standardmäßig in C . Wenn ganze Zahlen in einem arithmetischen Ausdruck verwendet werden, führt der Divisionsoperator eine ganzzahlige Division durch, bei der der Bruchteil des Ergebnisses verworfen wird.

Korrigieren der Divisionsoperation

Um die zu erhalten Um ein korrektes Gleitkomma-Divisionsergebnis zu erhalten, muss sichergestellt werden, dass mindestens ein Operand ein Gleitkommawert ist. Dies kann erreicht werden, indem eine der Ganzzahlen in eine Gleitkommazahl doppelter Genauigkeit umgewandelt wird. Beispielsweise kann man den folgenden Code verwenden:

double f = 3.0 / 5;
Nach dem Login kopieren

In diesem Fall ist 3.0 eine Gleitkommazahl mit doppelter Genauigkeit, die sicherstellt, dass der Compiler eine Gleitkommadivision durchführt, die den Bruchteil beibehält des Ergebnisses.

Durch die Umwandlung eines der Operanden in einen Gleitkommawert erzeugt der Divisionsoperator nun das erwartete Ergebnis, das in diesem Fall 0,6 beträgt. Mit dieser Technik können Programmierer arithmetische Operationen an Gleitkommazahlen korrekt ausführen und unerwartete Nullausgaben vermeiden.

Das obige ist der detaillierte Inhalt vonWarum führt die Ganzzahldivision in C zu Null, wenn 3 durch 5 als Doppel dividiert wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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 Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage