money
類型儲存具有固定小數精度的貨幣金額;請參閱表 8.3。小數精度由資料庫的lc_monetary設定決定。表格中顯示的範圍假設有兩個小數點位數。輸入接受多種格式,包括整數和浮點數文字,以及典型的貨幣格式,例如'$1,000.00'
。輸出通常採用後一種形式,但取決於地區設定。
表 8.3. 貨幣類型
名稱 | 儲存大小 | 描述 | 範圍 |
---|---|---|---|
money |
8 個位元組 | 貨幣金額 | -92233720368547758.08 到 +92233720368547758.07 |
由於此資料類型的輸出與地區設定相關,因此將money
資料載入到具有不同lc_monetary
設定的資料庫中可能無法運作。為避免問題,在將傾印還原到新資料庫之前,請確保lc_monetary
具有與傾印資料庫中相同或等效的值。
numeric
、int
和 bigint
資料類型的值可以轉換為money
。從 real
和 double precision
資料類型的轉換可以先轉換為 numeric
來完成,例如
SELECT '12.34'::float8::numeric::money;
但是,不建議這樣做。由於存在捨入誤差的潛在可能,因此不應使用浮點數來處理貨幣。
money
值可以轉換為 numeric
而不會損失精度。轉換為其他類型可能會損失精度,並且還必須分兩個階段完成
SELECT '52093.89'::money::numeric::float8;
money
值除以整數值的運算,會將小數部分朝零的方向截斷。若要取得四捨五入的結果,請除以浮點數值,或者在除法之前將money
值轉換為numeric
,然後再轉換回money
。(後者更可取,以避免精度損失的風險。)當money
值除以另一個money
值時,結果為double precision
(也就是說,是一個純數字,而不是貨幣);貨幣單位在除法中相互抵銷。
如果您在文件中發現任何不正確、與特定功能的經驗不符或需要進一步澄清的內容,請使用此表單來回報文件問題。