postgresql 浮点数函数_PostgreSQL 浮点精度调整(extra_float_digits)

本文介绍了PostgreSQL中浮点数类型的精度问题,以及如何通过设置extra_float_digits参数来调整精度。浮点数在PostgreSQL中分为float4和float8,分别对应不同的比特位数。示例展示了不同参数设置对浮点数表示的影响,并对比了Oracle的浮点类型。了解这一参数对于确保数据的精确性至关重要。
摘要由CSDN通过智能技术生成

背景

之前写过一篇文章介绍PostgreSQL浮点类型存储值和表述值不一致带来的问题。

请参考:

浮点精度,在大多数平台中,float4精确到6位数字,float8精确到15位数字。

On most platforms, the real type has a range of at least 1E-37 to 1E+37 with a precision of at least 6 decimal digits. The double precision type typically has a range of around 1E-307 to 1E+308 with a precision of at least 15 digits.

使用extra_float_digits 参数最多可以增加3位精度。

语法方面,PostgreSQL兼容IEEE的用法。支持在float()中输入bit位。

代码如下,1到24个比特位表示float4,25到53个比特位表示float8:

src/backend/parser/gram.y

opt_float: '(' Iconst ')'

{

/*

* Check FLOAT() precision limits assuming IEEE floating

* types - thomas 1997-09-18

*/

if ($2 < 1)

ereport(ERROR,

(errcode(ERRCODE_INVALID_PARAMETER_VALUE),

errmsg("precision for type float must be at leas

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值