PostgreSQL 中的除法( / ) 計算錯誤
您在PostgreSQL 中遇到除法問題,其中整數除法會導致結果不準確。讓我們深入研究背景並提供解決問題的解決方案。
理解整數除法
整數除法,以「/」表示,將商截斷為零。這表示當兩個整數相除時,結果會向下捨去到最接近的整數。
在給定的範例中,「dev_cost」和「sell_cost」都是整數。因此,查詢「select dev_cost / sell_cost」傳回 2,相當於 16000 除以 7500 的整數。但是,您需要軟體數量來恢復 dev_cost,即 3。
解決計算問題
要獲得精確的值,我們需要保證至少除法中的一個操作數是浮點值或十進制值。這可以防止截斷並導緻小數商。
一個解決方案是使用「CAST」運算子將其中一列轉換為小數:
select cast(dev_cost as decimal) / sell_cost from software ;
另一種替代方法是使用用於轉換dev_cost 列的「::decimal 」語法:
select dev_cost::decimal / sell_cost from software ;
這兩種方法都會傳回浮點結果,代表所需軟體的確切數量。
四捨五入到最接近的整數
如果要將結果四捨五入到最接近的整數,代表恢復 dev_cost的最小軟體數量,可以使用「CEIL」函數:
select ceil(dev_cost::decimal / sell_cost) from software ;
這將四捨五入小數結果一直到下一個整數,確保售出足夠的軟體來支付開發成本。
以上是PostgreSQL中如何正確計算整數除法的結果避免截斷?的詳細內容。更多資訊請關注PHP中文網其他相關文章!