MariaDB 中使用 python mysql 连接器的浮点精度

问题描述

我是 python 和 MariaDB 的新手,想知道我所有 MariaDB 表中的所有浮点类型都缺乏精度。这是一个示例:我在 MariaDB 中创建了一个表,其中包含四种不同的数据类型 float、double、decimal 和 int:

CREATE TABLE test(
   id INT,foo float,bar double,foo2 decimal(19,5),bar2 int,PRIMARY KEY( id )
)

现在我在每个字段中插入并读出相同的数字 (1234567.891):


cx = MysqL.connector.connect(user='root',password='ABC',host='192.168.0.107',database='DEF')
query= "INSERT INTO test (foo,bar,foo2,bar2) VALUES (%s,%s,%s)"
writtenvalues = (1234567.891,1234567.891,1234567.891)
csr = cx.cursor()
csr.execute(query,writtenvalues)
cx.commit()
query= "SELECT * FROM test"
csr.execute(query)
readvalues = csr.fetchall()
print(readvalues)
csr.close()
cx.close()

我得到以下结果:

[(0,1234570.0,Decimal('1234567.89100'),1234568)]

我很惊讶第一个应该是浮点数的数字 (foo) 竟然是 1234570.0(四舍五入到下一个 10!)。它甚至不如整数 (bar2) 准确。只有 double 类型是准确的。 有没有简单的方法可以提高浮点型的精度,还是需要全部改成double?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)