[英]Control decimal division precision in MySQLdb
MySQLdb有点奇怪,它似乎总是返回一个Decimal对象,该对象的数字比除法运算的分子高2个位数。
如果分母相对较大,则意味着有时结果会被截断为零:
>>> 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"),),)
我可以强制进行浮动分隔吗? 除了向所有内容添加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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.