我正在尝试使用psycopg2将float绑定到postgresql双精度。
ele = 1.0/3.0
dic = {'name': 'test', 'ele': ele}
sql = '''insert into waypoints (name, elevation) values (%(name)s, %(ele)s)'''
cur = db.cursor()
cur.execute(sql, dic)
db.commit()
sql = """select elevation from waypoints where name = 'test'"""
cur.execute(sql_out)
ele_out = cur.fetchone()[0]
ele_out
0.33333333333300003
ele
0.33333333333333331
显然我不需要精度,但我希望能够简单地比较这些值。我可以使用struct模块并将其保存为字符串,但认为应该有更好的方法。谢谢
答案 0 :(得分:0)
您遇到此问题的原因如下:
sql = '''insert into waypoints (name, elevation) values (%(name)s, %(ele)s)'''
因为在此处将float转换为字符串时,您无法获得所期望的所有数字。例如,
str(ele)
产生
'0.333333333333'
将行更改为
sql = '''insert into waypoints (name, elevation) values (%(name)s, %(ele).17f)'''
我相信会给你你想要的结果,因为
'%(ele).17f' % dic
产生
'0.33333333333333331'