Heim >Datenbank >MySQL-Tutorial >Warum gibt meine Divisionsberechnung Null anstelle eines Dezimalwerts zurück?
Programmieren beinhaltet oft mathematische Operationen, und Division ist da keine Ausnahme. Unerwartete Ergebnisse können jedoch problematisch sein. Dieser Artikel konzentriert sich auf ein häufiges Problem: Divisionsoperationen, die Null zurückgeben, wenn ein Ergebnis ungleich Null erwartet wird.
Stellen Sie sich ein Szenario vor, in dem das Ziel darin besteht, die in den Variablen @set1
und @set2
gespeicherten ganzzahligen Werte zu dividieren und das Ergebnis in @weight
zu speichern. Der Code erzeugt unerwartet 0.
Die Ursache liegt in der Natur der Variablen: Sowohl @set1
als auch @set2
sind Ganzzahlen. Dies weist auf das kritische Konzept der Ganzzahldivision hin.
Die Ganzzahldivision führt im Gegensatz zur Gleitkommadivision eine Division über zwei ganze Zahlen durch und gibt nur den ganzzahligen Quotienten zurück. Jeder gebrochene Rest wird abgeschnitten (verworfen).
Wenn @set1
47 und @set2
638 ist, ergibt die Ganzzahldivision 47 ÷ 638 = 0. Dies erklärt die Nullausgabe.
Um dieses Problem zu beheben und das korrekte Dezimalergebnis (ungefähr 0,073667712) zu erhalten, konvertieren Sie @set1
und @set2
vor der Division explizit in Gleitkommazahlen (Floats). Floats können Bruchteile verarbeiten.
Die Lösung beinhaltet diese einfache Code-Anpassung:
<code class="language-sql">SET @weight = CAST(@set1 AS FLOAT) / CAST(@set2 AS FLOAT);</code>
Zusammenfassend lässt sich sagen, dass das Verständnis des Verhaltens der Ganzzahldivision der Schlüssel zu einer genauen Programmierung ist. Die Konvertierung von Ganzzahlen in Gleitkommazahlen gewährleistet präzise Berechnungen und verhindert fehlerhafte Nullergebnisse.
Das obige ist der detaillierte Inhalt vonWarum gibt meine Divisionsberechnung Null anstelle eines Dezimalwerts zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!