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

Warum ergibt die Ganzzahldivision Null statt eines Dezimalwerts?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-20 17:31:12280Durchsuche

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>

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>

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!

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