GBase 8c V3.0.0数据类型——货币类型

本文介绍了在数据库中处理货币类型数据时应注意的问题。强调了money类型在存储固定小数精度的货币金额中的使用,以及与其它类型(如numeric、int、bigint、real和doubleprecision)之间的转换。特别指出,浮点数不应用于处理货币类型,因为可能会导致精度损失。转换过程中,money类型的值可以无损地转换为numeric,但转换为其他类型可能丢失精度。在除法运算中,money与money相除的结果是doubleprecision类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

货币类型

货币类型存储带有固定小数精度的货币金额。

表3-5中显示的范围假设有两位小数。可以以任意格式输入,包括整型、浮点型或者典型的货币格式(如“$1,000.00”)。根据区域字符集,输出一般是最后一种形式。

名称

存储容量

描述

范围

money

8 字节

货币金额

-92233720368547758.08到+92233720368547758.07

numeric,int和bigint类型的值可以转化为money类型。如果从real和double precision类型转换到money类型,可以先转化为numeric类型,再转化为money类型,例如:

gbase=# SELECT '12.34'::float8::numeric::money;

money

--------

 $12.34

(1 row)

这种用法是不推荐使用的。浮点数不应该用来处理货币类型,因为小数点的位数可能会导致错误。

money类型的值可以转换为numeric类型而不丢失精度。转换为其他类型可能丢失精度,并且必须通过以下两步来完成:

gbase=# SELECT '52093.89'::money::numeric::float8;

  float8

----------

 52093.89

(1 row)

当一个money类型的值除以另一个money类型的值时,结果是double precision(也就是,一个纯数字,而不是money类型);在运算过程中货币单位相互抵消。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值