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!