SQLAlchemy 在更新 Postgres 条目时更改浮点数的精度

SQLAlchemy changes precision of floating-point number when updating a Postgres entry

我使用带有对象关系映射器的 SQLAlchemy 来访问 Postgres 数据库。一切正常,除了 SQLAlchemy 在我升级数据库条目时更改了一些(但不是全部)浮点数的精度。

假设我的数据库有一个 table My_table 看起来像这样:

id  |  my_float
----------------
1   | [NULL]
2   |  1.11
3   |  1.12

我获取 id=1 的条目并更新它:

from dbconnection import dbsession
from models import My_table
my_instance = dbsession.query(My_table).filter_by(id=1).first()
my_instance.my_float = 0.15
dbsession.commit()

我的 Postgres 数据库中的结果如下所示:

select * from my_table where id=1;
id  |  my_float
----------------
1   | 0.15000001

有没有办法让 SQLAlchemy 将准确的数字写入 Postgres?
编辑:我应该补充一点,列 my_float 的类型是 FLOAT(2)

没有。它与 SQLAlchemy 没有特别关系,但计算机以二进制方式运行。绝大多数十进制(基数 10)表示形式的小数点值无法以二进制表示形式(基数 2)准确表示。所有浮点值基本上都是估计值。但是,您可以指定所需的小数位数。但是,我不知道如何在 SQLAlchemy 中执行此操作。