【问题标题】:pymongo float precisionpymongo 浮点精度
【发布时间】:2017-11-30 02:28:06
【问题描述】:

我有一个存储在 mongo 中的数字为 15000.245263,小数点后有 6 个数字,但是当我使用 pymongo 获取这个数字时,我得到了 15000.24。 pymongo是否降低了float的精度?

【问题讨论】:

    标签: python-2.7 pymongo floating-accuracy


    【解决方案1】:

    我无法重现这个。在我的 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”的检索值与我输入时的打印值相同。

    【讨论】:

      【解决方案2】:

      如果您尝试打印一个长浮点值,可能会发生这种情况,我认为它与 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-31
        • 2018-07-06
        • 2019-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多