【问题标题】:psycopg2 rounds my float in SELECT statementpsycopg2 在 SELECT 语句中舍入我的浮点数
【发布时间】:2018-08-09 12:24:31
【问题描述】:

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

【问题讨论】:

标签: postgresql rounding psycopg2 truncated


【解决方案1】:

试试SET extra_float_digits=3 看看会不会改变。

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

您应该使用double precision 而不是real

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多