首页 > 解决方案 > psycopg2 在 SELECT 语句中舍入我的浮点数

问题描述

我正在编写一个快速脚本来使用 psycopg2 从我的数据库中检索值。在我验证输出中的值之前,一切似乎都运行良好。我惊讶地发现他们被围捕了。我仔细检查了存储的值,它们是正确的。那么为什么是这个查询

cursor = connection.cursor()
cursor.execute('SELECT val, val+0 FROM mytable;')
rows = cursor.fetchall()
print(rows[0])

返回

(1860500.0, 1860496.0)
 ^ rounded? ^ correct

我究竟做错了什么?注意:列 val 定义为

ALTER TABLE public.mytable ADD COLUMN val real;

标签: postgresqlroundingpsycopg2truncated

解决方案


试试看SET extra_float_digits=3这是否会改变事情。

第二个值被转换为内部,因为它是andnumeric的“最小公分母” ,并且没有四舍五入。realintegernumeric

您应该使用double precision而不是real.


推荐阅读