我有一个python(2.7)函数,它对一个双值执行MySQL update查询,当数字大于1e-7时,一切正常,问题是如果数字等于或小于,它会用0更新字段。
为了实际查看结果,我在代码中添加了一些print语句,以输出qry
(执行的查询)和value
(要插入的值)。
qry = 'UPDATE %s SET value_dbl = %f WHERE name = \'%s\' && board_id = %d' % \
(self._getValueTableName(idx), value, valueName, self.boardInfo[boardName])
print value
print qry
如果使用值1e-6,则输出如下:
更新temp_ctrl_1 SET value_dbl=0.000001,其中name='pid_ki'&board_id=9
9.9999974738E-06
如你所见,在这种情况下一切都很好。但如果使用值1e-7;
更新temp_ctrl_1 SET value_dbl=0.000000,其中name='pid_kp'&&board_id=9
9.9999997475E-07
构造查询字符串时,变量
value
四舍五入为零,如何使用小于或等于1e-7的值更新MySQL double字段?? 最佳答案
DOUBLE
s可以使用科学符号插入,因此您只需将%f
更改为%s
即可获得Python的字符串值表示形式,而不是尝试将其舍入为浮点:
>>> value = 1e-7
>>> print value
1e-07
>>> print '%f' % (value)
0.000000
>>> print '%s' % (value)
1e-07
不过,我同意另一个答案中表达的观点,即如果可以帮助的话,实际上不应该将查询字符串与字符串格式混为一谈。
关于python - Python在MySQL数据库中插入值<= 1e-7,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23115038/