Heim >Datenbank >MySQL-Tutorial >Wie geht PostgreSQL mit Ganzzahldivision um und wie erhalte ich genaue Ergebnisse?

Wie geht PostgreSQL mit Ganzzahldivision um und wie erhalte ich genaue Ergebnisse?

Linda Hamilton
Linda HamiltonOriginal
2024-12-26 18:40:18213Durchsuche

How Does PostgreSQL Handle Integer Division, and How Can I Get Accurate Results?

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!

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