Heim > Datenbank > MySQL-Tutorial > Warum ergibt die Ganzzahldivision Null statt eines Dezimalwerts?

Warum ergibt die Ganzzahldivision Null statt eines Dezimalwerts?

Mary-Kate Olsen
Freigeben: 2025-01-20 17:31:12
Original
281 Leute haben es durchsucht

Why Does Integer Division Yield Zero Instead of a Decimal Value?

Unerwartetes Nullergebnis der Ganzzahldivision

Während eines kürzlich durchgeführten Programmierprojekts führte der folgende Code zu einem unerwarteten Ergebnis:

<code>PRINT @set1
PRINT @set2

SET @weight= @set1 / @set2;
PRINT @weight</code>
Nach dem Login kopieren

Die Division ergab 0 statt der erwarteten 0,073667712.

Die Hauptursache: Ganzzahlige Datentypen

Das Problem ergibt sich aus den Datentypen @set1 und @set2. Beide sind Ganzzahlen, die nur ganze Zahlen speichern können. Bei der Ganzzahldivision wird immer der Dezimalteil abgeschnitten, was zu einem ganzzahligen Ergebnis führt. Daher ergibt 47 dividiert durch 638 0.

Lösungen

Um das korrekte Dezimalergebnis zu erhalten, stehen zwei Ansätze zur Verfügung:

  1. Variablen als Floats definieren: @set1 und @set2 als Gleitkommazahlen (Floats) deklarieren. Dadurch können die Variablen Dezimalwerte speichern und so eine genaue Dezimalteilung gewährleisten.

  2. Typumwandlung während der Berechnung: Wenn eine Änderung variabler Datentypen nicht möglich ist, verwenden Sie den Operator CAST, um die Ganzzahlen während der Division vorübergehend in Gleitkommazahlen umzuwandeln:

<code>SET @weight= CAST(@set1 AS float) / CAST(@set2 AS float);</code>
Nach dem Login kopieren

Beide Methoden garantieren, dass die Divisionsoperation den erwarteten Dezimalwert zurückgibt, wodurch das Problem des unerwarteten Nullergebnisses behoben wird.

Das obige ist der detaillierte Inhalt vonWarum ergibt die Ganzzahldivision Null statt eines Dezimalwerts?. 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