PostgreSQL 中的除法(/) 不準確
在PostgreSQL 中執行除法時,重要的類型是要考慮所涉及的資料以確保結果準確。在所描述的情況下,目標是確定要銷售的軟體數量以收回開發成本,整數除法可能會導致不正確的結果。
在提供的查詢中,dev_cost 和 sell_cost 都是整數型。整數除法將結果截斷為零,這意味著 16000 除以 7500 得到 2,而不是預期的 3。
要獲得準確的結果,至少有一個值必須轉換為浮點型類型,例如浮點數或小數。或者,可以使用 ::decimal 語法將 dev_cost 明確隱式轉換為小數。這會將除法強制轉換為浮點運算,產生非截斷除法。
考慮以下修改後的查詢:
select dev_cost::decimal / sell_cost from software ;
或者,可以使用ceil() 函數將結果四捨五入到最接近的整數:
select ceil(dev_cost::decimal / sell_cost) from software ;
透過利用這些技術,可以獲得準確的除法結果,確保基於資料庫查詢的業務計算是合理的。
以上是如何避免 PostgreSQL 中整數除法不準確?的詳細內容。更多資訊請關注PHP中文網其他相關文章!