我遇到了一个有趣的问题。我有一个MySQL数据库,其中包含一些具有非常精确的十进制值的双精度数(例如,0.00895406607247756,17位小数)。这是科学数据,因此这种高精度非常重要。
我在Python中使用MySQLdb从数据库中选择数据:
cursor.execute("SELECT * FROM " ...etc...)
for n in range(cursor.rowcount):
row = cursor.fetchone()
print row
出于某种原因,当它达到我非常精确的小数时,它们被截断到最多14个小数位。 (即前一个小数变为0.00895406607248)
有没有办法以原始形式从MySQLdb获取数据而不截断?
答案 0 :(得分:3)
您使用什么MySQL数据类型来存储数据?是DECIMAL(18,17)
吗? DECIMAL
最多65 digits of precision。
如果将MySQL数据类型设置为使用DECIMAL(...)
,那么MySQLdb会将数据转换为Python decimal.Decimal对象,这应保持精度。