python - 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, %s)"
writtenvalues = (1234567.891, 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, 1234567.891, Decimal('1234567.89100'), 1234568)]
我很惊讶第一个数字(foo)应该是一个浮点数,结果是 1234570.0(四舍五入到下一个 10!)。它甚至不如整数 (bar2) 准确。只有 double 类型是准确的。有没有一种简单的方法可以提高浮点型的精度,还是需要将它们全部更改为双精度?
解决方案
推荐阅读
- android - 空 KMM 项目卡在 gradle 同步中
- python - 烧瓶结果过滤箱
- c++ - 使用 Windows API 调整屏幕大小时,DPI 感知会扭曲文本
- javascript - Vaadin 应用程序中的 pendo 或类似服务
- python - 如何在不重复列名的情况下将系列连接或合并到数据框
- flutter - 更新颤动中导航栏项的状态
- r - 有没有办法在 R 中为字符串匹配设置“规则”?
- javascript - NextJS getServerSideProps 将数据传递给 Page Class
- java - 放心编码查询参数
- angular - ng add ngx-spinner :您尝试添加的包不支持原理图