PostgreSQL 9.3.1 中文手册 | ||||
---|---|---|---|---|
Prev | Up | Chapter 8. 数据类型 | Next |
money类型存储带有固定小数精度的货币金额,可查阅 Table 8-3。小数精度由lc_monetary 的设置来决定。表格中显示的范围假设有两位小数。可以以任意格式输入,包括整型, 浮点型,或者典型的货币格式,如'$1,000.00'。 根据区域字符集,输出一般是最后一种形式。
由于输出的数据类型对语言环境要求很细,因此,lc_monetary 设置的不同可能会造成无法将money数据输入到数据库中。 为了避免这种问题的发生,在向一个新数据库进行转储之前,确保 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值除时, 结果是double precision(也就是,一个纯数字,而不是money); 在结果中货币单位相互取消。