python内存错误,溢出浮点?

2024-09-30 10:41:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个作业来计算e,当n趋向于(1+1/n)^n的无穷大时。我知道这是一个非常愚蠢的计算方法,但我必须这么做。在

我应该测试我的结果的值高达n = 10 ^20。在

然而,我的程序在10^7时因内存错误而死亡,我不确定原因。这是我的代码:

def pow(n):
  p = (1.0 + 1.0/n)
  for _ in range(1,n+1):
    p = p * (1.0 + 1.0/n)
  return p

def e(k):
  print 'e with k =', k, 'is', pow(10**k)


map(e, range(1,21))

所以我的问题是这里发生了什么?我是否溢出了python用来存储我的p变量的内容?如果是这样,它必须非常大10^61344位长。python如何管理float?在

我还不能回答我自己的问题,所以就在这里。在

问题是range(10**7)是一个对于python来说太大的列表。 现在它是这样工作的:

^{pr2}$

Tags: 内存代码in程序forreturndef错误
1条回答
网友
1楼 · 发布于 2024-09-30 10:41:09

您可能正在使用python2,其中range创建一个列表。所以当你做range(1,10**20)时,你试图创建一个10*20个元素的列表,这对于你的可用内存来说太大了。在

相反,请使用xrange(1, n+1)。那就去吃午饭吧,因为要过一段时间才能完成循环。(或者,更改您的pow函数,使其执行(1.0+1.0/n)**n,而不是通过重复乘法手动求幂。)

相关问题 更多 >

    热门问题