Postgresql
postgresql 中的 ceil() 函式行為
在 postgresql 中使用 ceil() 時,我發現它有一些奇怪的行為,請參閱 SQL:
Select *, ceil( (550*0.5)/100 ), ceil( (58*5)/100 ), FROM XYZ
如果我專注於 ceil 函式的輸出,那很奇怪:
- ceil( (550*0.5)/100 ) 返回 3 (將 2.75 轉換為 3 )
- ceil((58*5)/100 ) 返回 2 (將 2.9 轉換為 2 )
如果第二條語句接近更大的整數 3 ,為什麼它會返回 2 ?
說明
PostgreSQL ceil 函式返回大於或等於數字的最小整數值。
除非另有說明,任何給定形式的函式都返回與其參數相同的數據類型。
如您所見,它可以正常工作,實際上,如果您使用整數,則返回值為一個整數,
(58 * 5) / 100)
返回 2,但如果您將其強制為十進制(58.0 * 5.0) / 100.0
,則返回 2.9。select (550 * 0.5) / 100 as C1, ceil((550 * 0.5) / 100) as CEIL_C1, (58 * 5) / 100 as C2, ceil((58 * 5) / 100) as CEIL_C2, (58.0 * 5.0) / 100.0 as C3, ceil((58.0 * 5.0) / 100.0) as CEIL_C3 ;
c1 | ceil_c1 | c2 | ceil_c2 | c3 | ceil_c3 -----------------: | ------: | -: | :------ | -----------------: | ------: 2.7500000000000000 | 3 | 2 | 2 | 2.9000000000000000 | 3
dbfiddle在這裡