gpt4 book ai didi

python - 控制MySQLdb中的小数除法精度

转载 作者:行者123 更新时间:2023-11-29 05:46:02 24 4
gpt4 key购买 nike

MySQLdb 做了一些奇怪的事情,它似乎总是返回一个比除法运算的分子多 2 个有效数字的 Decimal 对象。

如果分母相对较大,这意味着有时结果会被截断为零:

>>> import MySQLdb
>>> db = MySQLdb.connect(.....)
>>> c = db.cursor();
>>> c.execute("select 1000/ 20990933630")
1L
>>> c.fetchall()
((Decimal("0.0000"),),)
>>> c.execute("select 1000.0000000000000000000000/ 20990933630")
1L
>>> c.fetchall()
((Decimal("4.763961516084313397E-8"),),)
>>> c.execute("select (1000 + 0.000000000000000000000) / 20990933630")
1L
>>> c.fetchall()
((Decimal("4.76396151608431340E-8"),),)

我可以强制 float 除法吗?有没有比将 0.0000000000 添加到所有内容更优雅的方法?

最佳答案

您可以更改 div_precision_increment 变量。默认为 4。

http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_div_precision_increment

这是一个使用你的部门的例子:

mysql> select 1000/ 20990933630;
+-------------------+
| 1000/ 20990933630 |
+-------------------+
| 0.0000 |
+-------------------+
1 row in set (0.00 sec)

mysql> set local div_precision_increment = 30;
Query OK, 0 rows affected (0.00 sec)

mysql> select 1000/ 20990933630;
+----------------------------------+
| 1000/ 20990933630 |
+----------------------------------+
| 0.000000047639615160843133969739 |
+----------------------------------+
1 row in set (0.00 sec)

mysql>

关于python - 控制MySQLdb中的小数除法精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1917385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com