【问题标题】:Does a higher decimal precision use more memory per instance?更高的十进制精度是否会在每个实例中使用更多内存?
【发布时间】:2018-03-13 09:14:16
【问题描述】:

使用 Python 的 decimal 模块,具有更高精度值的上下文是否会使用更多内存。如果不是,您为什么不总是使用最大值?

【问题讨论】:

  • 内存,处理时间..天下没有免费的午餐
  • @MateenUlhaq 不确定如何应用?我意识到它比硬件慢(我想你在说什么?),我只是想知道精度是否直接影响内存使用。
  • 啊,我以为你问的是十进制与浮点数

标签: python decimal precision


【解决方案1】:

是的,当然尺寸会增加;您可以通过以下方式进行检查:

from sys import getsizeof
from decimal import Decimal, getcontext

getcontext().prec = 6
d = Decimal(1)/Decimal(3)
print(getsizeof(d))  # 104
getcontext().prec = 256
d = Decimal(1)/Decimal(3)
print(getsizeof(d))  # 216

ymmv...确切的值可能是特定于实现/平台的。

【讨论】:

  • Python 2.7.10,两者都“80”。
  • 使用 Python 3 获得 104 和 216。
  • 我忘了补充:细节可能是实现/平台特定的。但更高的精度需要更多的内存这一事实并非如此。这里的代码仅供您使用:这样您就可以了解在您的特定情况下消耗了多少内存。
【解决方案2】:

Decimal 可能非常有用,但是通常您不需要无限位小数,货币通常需要 2-4。

你想存储的数字越多,它就会使用越多的内存,一般来说你只想使用最低要求的类型,这就是我们在Java中使用short而不是int的原因,同样适用于 Python,它只是在幕后多一点。

如今,您因打字而遇到内存问题的可能性很小,但它仍然可能发生。

【讨论】:

    猜你喜欢
    • 2010-12-20
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 2020-03-28
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    相关资源
    最近更新 更多