postgresql - psycopg2 在 SELECT 语句中舍入我的 float

标签 postgresql rounding psycopg2 truncated

我正在编写一个快速脚本,使用 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 而不是真实

关于postgresql - psycopg2 在 SELECT 语句中舍入我的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51766958/

相关文章:

javascript - JavaScript 中的最小最大和舍入十六进制

python - 跨进程共享 psycopg2/libpq 连接

Django 1.6.1 : Transaction error. 在 unitest 中的原子 block 结束之前无法执行查询

php - 如何使用 php 连接到所有类型的数据库?

java - 如何在 Java 中将数字四舍五入到 n 位小数

c - 将具有非零十进制数字的 float 向上舍入

database - psycopg2 - 类型错误 : 'int' object is not subscriptable

python - 使用 Python 在 Postgresql 中存储 Json 对象数组

sql - 在子查询中加入具有多个关联行的子查询

node.js - 为 postgresQL 续写 bulkCreate updateOnDuplicate?