PostgreSQL extra_float_digits——控制浮点数精度

本文介绍了PostgreSQL中float类型数据的精度问题,特别是extra_float_digits参数的作用。通过示例展示了如何通过调整该参数来控制浮点数的显示精度,强调了在查询时注意浮点数精度的重要性,并提供了设置不同extra_float_digits值时的显示效果。同时提到了在pg_dump时如何使用--extra-float-digits选项来控制导出数据的精度。

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

PostgreSQL中extra_float_digits参数可以用来控制浮点数输出的精度,可能我们在平时使用中并不太会留意,那我们下来看下面这个例子。

建一张表,两个字段类型分别是float和numeric,然后插入数据

bill@bill=>create table t1(c1 float,c2 numeric);
CREATE TABLE
bill@bill=>insert into t1 values(0.55555555555555555,0.55555555555555555);
INSERT 0 1

接下来我们去查询,你就会发现查出来的数据竟然和我们插入的不一样了!

bill@bill=>select * from t1;
        c1         |         c2
-------------------+---------------------
 0.555555555555556 | 0.55555555555555555
(1 row)

好像这样看上去并没有什么,但是会很容易给我们产生误导,让你以为c1字段插入的值是0.555555555555556,其实并不是。可以看到下面的查询并没有记录。

bill@bill=>select * from t1 where c1 >= 0.555555555555556;
 c1 | c2
----+----
(0 rows)

这是为什么呢?其实表中存的数据还是原先的0.55555555555555555,只是显示出来错误了,所以我们要这样去查询:

bill@bill=>select * from t1 where c1::numeric >= 0.555555555555556;
        c1         |         c2
-------------------+---------------------
 0.5555555555
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值