Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine ungenaue Ganzzahldivision in PostgreSQL vermeiden?

Wie kann ich eine ungenaue Ganzzahldivision in PostgreSQL vermeiden?

Linda Hamilton
Linda HamiltonOriginal
2024-12-27 17:46:10975Durchsuche

How Can I Avoid Inaccurate Integer Division in PostgreSQL?

Ungenauigkeit der Division (/) in PostgreSQL

Bei der Durchführung einer Division in PostgreSQL ist es wichtig, die beteiligten Datentypen zu berücksichtigen, um genaue Ergebnisse sicherzustellen . In dem beschriebenen Fall, in dem das Ziel darin besteht, die Menge an Software zu bestimmen, die verkauft werden soll, um Entwicklungskosten zu decken, kann eine ganzzahlige Division zu falschen Ergebnissen führen.

In der bereitgestellten Abfrage sind dev_cost und Sell_cost beide ganzzahlige Typen. Durch eine Ganzzahldivision wird das Ergebnis in Richtung Null gekürzt, was bedeutet, dass die Division von 16000 durch 7500 2 anstelle der erwarteten 3 ergibt.

Um ein genaues Ergebnis zu erhalten, muss mindestens einer der Werte in einen Gleitkommawert umgewandelt werden Typ wie Float oder Dezimalzahl. Alternativ kann die ::decimal-Syntax verwendet werden, um dev_cost implizit explizit in eine Dezimalzahl umzuwandeln. Dies erzwingt die Division in eine Gleitkommaoperation, was zu einer nicht abgeschnittenen Division führt.

Betrachten Sie die folgende modifizierte Abfrage:

select dev_cost::decimal / sell_cost from software ;

Alternativ kann die Funktion ceil() verwendet werden um das Ergebnis auf die nächste ganze Zahl aufzurunden:

select ceil(dev_cost::decimal / sell_cost) from software ;

Durch die Verwendung dieser Techniken können genaue Divisionsergebnisse erzielt werden, wodurch sichergestellt wird, dass Geschäftsberechnungen darauf basieren Datenbankabfragen sind solide.

Das obige ist der detaillierte Inhalt vonWie kann ich eine ungenaue Ganzzahldivision in PostgreSQL vermeiden?. 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