【发布时间】:2017-11-30 02:28:06
【问题描述】:
我有一个存储在 mongo 中的数字为 15000.245263,小数点后有 6 个数字,但是当我使用 pymongo 获取这个数字时,我得到了 15000.24。 pymongo是否降低了float的精度?
【问题讨论】:
标签: python-2.7 pymongo floating-accuracy
我有一个存储在 mongo 中的数字为 15000.245263,小数点后有 6 个数字,但是当我使用 pymongo 获取这个数字时,我得到了 15000.24。 pymongo是否降低了float的精度?
【问题讨论】:
标签: python-2.7 pymongo floating-accuracy
我无法重现这个。在我的 Mac 上的 Python 2.7.13 中:
>>> from pymongo import MongoClient
>>> c = MongoClient().my_db.my_collection
>>> c.delete_many({}) # Delete all documents
>>> c.insert_one({'x': 15000.245263})
>>> c.find_one()
{u'x': 15000.245263, u'_id': ObjectId('59525d32a08bff0800cc72bd')}
“x”的检索值与我输入时的打印值相同。
【讨论】:
如果您尝试打印一个长浮点值,可能会发生这种情况,我认为它与 mongodb 无关。
>>> print 1111.1111
1111.1111
>>> print 1111111111.111
1111111111.11
>>> print 1111111.11111111111
1111111.11111
# for a timestamp
>>> import time
>>> now = time.time()
>>> print now
1527160240.06
对于python2.7.10,它只会显示13个字符(对于我的机器),如果你想显示整个值,请使用格式,如下所示:
>>> print '%.6f' % 111111111.111111
111111111.111111
而且这只是显示问题,不会影响变量的值。
>>> test = 111111111.111111 * 2
>>> test
222222222.222222
>>> print test
222222222.222
【讨论】: