支援的版本:目前版本 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

8.2. 貨幣類型 #

money 類型儲存具有固定小數精度的貨幣金額;請參閱表 8.3。小數精度由資料庫的lc_monetary設定決定。表格中顯示的範圍假設有兩個小數點位數。輸入接受多種格式,包括整數和浮點數文字,以及典型的貨幣格式,例如'$1,000.00'。輸出通常採用後一種形式,但取決於地區設定。

表 8.3. 貨幣類型

名稱 儲存大小 描述 範圍
money 8 個位元組 貨幣金額 -92233720368547758.08 到 +92233720368547758.07

由於此資料類型的輸出與地區設定相關,因此將money資料載入到具有不同lc_monetary設定的資料庫中可能無法運作。為避免問題,在將傾印還原到新資料庫之前,請確保lc_monetary具有與傾印資料庫中相同或等效的值。

numericintbigint 資料類型的值可以轉換為money。從 realdouble precision 資料類型的轉換可以先轉換為 numeric 來完成,例如

SELECT '12.34'::float8::numeric::money;

但是,不建議這樣做。由於存在捨入誤差的潛在可能,因此不應使用浮點數來處理貨幣。

money 值可以轉換為 numeric 而不會損失精度。轉換為其他類型可能會損失精度,並且還必須分兩個階段完成

SELECT '52093.89'::money::numeric::float8;

money 值除以整數值的運算,會將小數部分朝零的方向截斷。若要取得四捨五入的結果,請除以浮點數值,或者在除法之前將money值轉換為numeric,然後再轉換回money。(後者更可取,以避免精度損失的風險。)當money值除以另一個money值時,結果為double precision(也就是說,是一個純數字,而不是貨幣);貨幣單位在除法中相互抵銷。

提交更正

如果您在文件中發現任何不正確、與特定功能的經驗不符或需要進一步澄清的內容,請使用此表單來回報文件問題。