# 8.2.货币类型
这个钱
类型以固定的小数精度存储货币金额;看见表8.3.分数精度由数据库的信用证_货币的背景表中显示的范围假定有两个小数位数。输入可以接受多种格式,包括整数和浮点文本,以及典型的货币格式,例如'$1,000.00'
.输出通常为后一种形式,但取决于区域设置。
表8.3.货币类型
名称 | 存储大小 | 描述 | 范围 |
---|---|---|---|
钱 | 8字节 | 货币金额 | -92233720368547758.08至+92233720368547758.07 |
由于此数据类型的输出对区域设置敏感,因此可能无法加载钱
将数据存储到具有不同设置的数据库中lc_货币
.为了避免出现问题,在将转储恢复到新数据库之前,请确保lc_货币
与转储的数据库中的值相同或等效。
价值观数字的
, 智力
和比基特
数据类型可以转换为钱
.从真实的
和双精度
数据类型可以通过强制转换到数字的
首先,例如:
SELECT '12.34'::float8::numeric::money;
但是,不建议这样做。由于可能存在舍入错误,浮点数不应用于处理货币。
A.钱
价值可以被赋予数字的
不失精准。转换为其他类型可能会失去精度,还必须分两个阶段完成:
SELECT '52093.89'::money::numeric::float8;
a的划分钱
整数值的值在小数部分向零截断的情况下执行。要获得四舍五入结果,请除以一个浮点值,或强制转换钱
重视数字的
在分开和返回之前钱
之后(后者更可取,以避免精度损失的风险。)当钱
价值除以另一个钱
价值,结果是双精度
(即,一个纯数字,而不是金钱);货币单位在部门中相互抵消。