我有一个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字段??

最佳答案

DOUBLEs可以使用科学符号插入,因此您只需将%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/

10-13 03:19