W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
money
類型存儲(chǔ)固定小數(shù)精度的貨幣數(shù)字,參閱表 8.3。小數(shù)的精度由數(shù)據(jù)庫的lc_monetary設(shè)置決定。表中展示的范圍假設(shè)有兩個(gè)小數(shù)位??山邮艿妮斎敫袷胶芏?,包括整數(shù)和浮點(diǎn)數(shù)文字,以及常用的貨幣格式,如'$1,000.00'
。 輸出通常是最后一種形式,但和區(qū)域相關(guān)。
表 8.3. 貨幣類型
名字 | 存儲(chǔ)尺寸 | 描述 | 范圍 |
---|---|---|---|
money | 8 bytes | 貨幣額 | -92233720368547758.08到+92233720368547758.07 |
由于這種數(shù)據(jù)類型的輸出是區(qū)域敏感的,因此將money
數(shù)據(jù)裝入到一個(gè)具有不同lc_monetary
設(shè)置的數(shù)據(jù)庫是不起作用的。為了避免這種問題,在恢復(fù)一個(gè)轉(zhuǎn)儲(chǔ)到一個(gè)新數(shù)據(jù)庫中之前,應(yīng)確保新數(shù)據(jù)庫的lc_monetary
設(shè)置和被轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫的相同或者具有等效值。
數(shù)據(jù)類型numeric
、int
和bigint
的值可以被造型成money
。從數(shù)據(jù)類型real
和double precision
的轉(zhuǎn)換可以通過先造型成numeric
來實(shí)現(xiàn),例如:
SELECT '12.34'::float8::numeric::money;
但是,我們不推薦這樣做。浮點(diǎn)數(shù)不應(yīng)該被用來處理貨幣,因?yàn)楦↑c(diǎn)數(shù)可能會(huì)有圓整錯(cuò)誤。
一個(gè)money
值可以在不損失精度的情況下被造型成numeric
。轉(zhuǎn)換到其他類型可能會(huì)丟失精度,并且必須采用兩個(gè)階段完成:
SELECT '52093.89'::money::numeric::float8;
一個(gè)money
值被一個(gè)整數(shù)值除的除法結(jié)果會(huì)被截去分?jǐn)?shù)部分。要得到圓整的結(jié)果,可以除以一個(gè)浮點(diǎn)值,或者在除法之前把money
轉(zhuǎn)換成numeric
然后在除法之后轉(zhuǎn)回money
(如果要避免精度丟失的風(fēng)險(xiǎn)則后者更好)。當(dāng)一個(gè)money
值被另一個(gè)money
值除時(shí),結(jié)果是double precision
(即一個(gè)純數(shù)字,而不是金額),在除法中貨幣單位被約掉了。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: