Divisionsoperator in PostgreSQL: Ganzzahlkürzung und Gleitkommaberechnungen verstehen
In PostgreSQL können Divisionsoperationen (/) zu unerwarteten Ergebnissen führen beim Arbeiten mit ganzzahligen Werten. Um falsche Berechnungen zu vermeiden, ist es wichtig, das zugrunde liegende Verhalten der ganzzahligen Division zu verstehen.
Betrachten Sie die folgende Abfrage:
SELECT dev_cost / sell_cost FROM software
Wobei dev_cost 16000 und sale_cost 7500 ist. Das Ergebnis können Sie erwarten 3, aber es wird 2 zurückgegeben. Dies liegt daran, dass bei der Ganzzahldivision jeder Bruchteil davon abgeschnitten wird Ergebnis.
Um den gewünschten Wert zu erhalten, müssen Sie mindestens einen der Werte in einen Gleitkommatyp (z. B. Dezimalzahl) umwandeln oder den ::-Operator verwenden, um ihn im laufenden Betrieb umzuwandeln:
SELECT CAST(dev_cost AS DECIMAL) / sell_cost FROM software
SELECT dev_cost::DECIMAL / sell_cost FROM software
Diese Abfragen geben 2,133 zurück, was das tatsächliche Divisionsergebnis ist.
Zusätzlich können Sie die verwenden ceil()-Funktion, um das Ergebnis auf die nächste Ganzzahl aufzurunden:
SELECT CEIL(dev_cost::DECIMAL / sell_cost) FROM software
Diese Abfrage gibt 3 zurück, was der gewünschten Menge an Software entspricht, um die Entwicklungskosten zu decken.
Das ist wichtig Sie müssen sich dieses Verhaltens bei der Durchführung von Divisionsoperationen bewusst sein und geeignete Datentypen und Umwandlungen verwenden, um genaue Berechnungen sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie geht PostgreSQL mit Ganzzahldivision um und wie erhalte ich genaue Ergebnisse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!