## 8.2.货币类型 这个`钱`类型以固定的小数精度存储货币金额;看见[表8.3](datatype-money.html#DATATYPE-MONEY-TABLE).分数精度由数据库的[信用证\_货币的](runtime-config-client.html#GUC-LC-MONETARY)背景表中显示的范围假定有两个小数位数。输入可以接受多种格式,包括整数和浮点文本,以及典型的货币格式,例如`'$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的划分`钱`整数值的值在小数部分向零截断的情况下执行。要获得四舍五入结果,请除以一个浮点值,或强制转换`钱`重视`数字的`在分开和返回之前`钱`之后(后者更可取,以避免精度损失的风险。)当`钱`价值除以另一个`钱`价值,结果是`双精度`(即,一个纯数字,而不是金钱);货币单位在部门中相互抵消。