PostgreSQL 中的除法運算不準確
在PostgreSQL 中執行除法(/) 運算時,需要注意的是,結果可能不注意的是,結果可能不注意的是,結果可能不注意的是,結果可能不注意的是,結果可能不注意的是,結果可能不注意的是,結果可能不注意的是,結果可能不注意的是,結果可能不注意的是準確正如預期的那樣,尤其是在處理整數資料類型時。在這種情況下,除法會將結果截斷為零,這可能會導致錯誤的答案。
為了說明問題,請考慮一個名為「software」的表,其中包含兩個整數列:「dev_cost」和「sell_cost」。如果「dev_cost」為 16000,「sell_cost」為 7500,則使用下列查詢將「dev_cost」除以「sell_cost」:
select dev_cost / sell_cost from software ;
將傳回結果 2。但是,正確答案是 3,表示需要出售 3 套軟體才能收回開發成本。
要解決這個問題,需要確保除法運算中至少有一個值被轉換為浮點或十進位資料型別。這允許精確的浮點計算,保留結果的小數部分。實現此目的的一種方法是在查詢中將“dev_cost”列轉換為十進制類型:
select cast(dev_cost as decimal) / sell_cost from software ;
或者,您可以使用PostgreSQL 類型轉換運算符來簡化轉換操作:
select dev_cost::decimal / sell_cost from software ;
最後,要得到四捨五入到最接近的整數的整數結果,可以使用ceil()函數查詢:
select ceil(dev_cost::decimal / sell_cost) from software ;
透過遵循這些準則,您可以克服 PostgreSQL 中整數除法帶來的潛在不準確性,並確保對數值資料進行準確的數學運算。
以上是為什麼 PostgreSQL 整數除法會產生意外的結果,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!