Ganzzahldivision und unerwartete Nullergebnisse
Der Beispielcode erzeugt ein Nullergebnis aus einer Divisionsoperation, bei der ein Dezimalwert (0,073667712) erwartet wird. Dies liegt daran, dass die Variablen standardmäßig als Ganzzahlen behandelt werden. Bei der Ganzzahldivision wird in vielen Programmiersprachen jeder Bruchteil des Ergebnisses abgeschnitten (verworfen), sodass nur der ganzzahlige Teil übrig bleibt. Daher ergibt 47 dividiert durch 638 Null.
Lösung: Verwendung von Gleitkomma-Datentypen
Um das korrekte Dezimalergebnis zu erhalten, müssen Sie Gleitkommazahlen verwenden (wie float
oder double
je nach Programmiersprache). Dies kann auf zwei Arten erreicht werden:
Variablen als Gleitkommazahlen deklarieren: Definieren Sie @set1
und @set2
von Anfang an als Gleitkomma-Datentypen. Die spezifische Syntax hängt von Ihrer Programmiersprache ab.
Typumwandlung: Konvertieren Sie die Ganzzahlvariablen explizit in Gleitkommazahlen, bevor Sie die Division mithilfe einer Typumwandlungsfunktion durchführen (wie CAST
in SQL oder ähnliche Funktionen in anderen Sprachen). Zum Beispiel:
<code class="language-sql">SET @weight = CAST(@set1 AS float) / CAST(@set2 AS float);</code>
Dadurch wird sichergestellt, dass die Division mit Gleitkommazahlen durchgeführt wird, der Dezimalteil erhalten bleibt und das erwartete Ergebnis von ungefähr 0,073667712 ergibt.
Das obige ist der detaillierte Inhalt vonWarum gibt die Ganzzahldivision Null anstelle eines Dezimalwerts zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!