Heim >Datenbank >MySQL-Tutorial >Warum gibt die Ganzzahldivision Null anstelle eines Dezimalwerts zurück?

Warum gibt die Ganzzahldivision Null anstelle eines Dezimalwerts zurück?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-20 17:25:10136Durchsuche

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

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:

  1. Variablen als Gleitkommazahlen deklarieren: Definieren Sie @set1 und @set2 von Anfang an als Gleitkomma-Datentypen. Die spezifische Syntax hängt von Ihrer Programmiersprache ab.

  2. 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!

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