psycopg2 在 SELECT 语句中四舍五入我的浮点数

psycopg2 rounds my float in SELECT statement

我正在编写一个快速脚本以使用 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;

尝试 SET extra_float_digits=3 看看是否会有所改变。

第二个值在内部转换为 numeric,因为这是 realinteger 的“最小公分母”,并且 numeric 未四舍五入。

您应该使用 double precision 而不是 real