Python 如何将十进制值存储为变量

Python 如何将十进制值存储为变量,python,python-3.x,infinite,pi,Python,Python 3.x,Infinite,Pi,我正在写一个程序,它使用一个无限和来计算pi,非常快,22次迭代的结果是15位小数。但是,由于python的限制,这是可以显示的最大小数位数。因此,请尝试解决这个问题。我查看了互联网,发现其中包含有关python decimal类的信息 这似乎是我问题的完美解决方案,但是当尝试这种方法时,我无法添加数字并将其保存到变量中。在回到原始站点寻找答案后,我找不到任何涉及变量的内容。但是这一页太长了,我很容易就漏掉了一些东西 这是我的代码,没有小数部分也可以正常工作: from decimal impo

我正在写一个程序,它使用一个无限和来计算pi,非常快,22次迭代的结果是15位小数。但是,由于python的限制,这是可以显示的最大小数位数。因此,请尝试解决这个问题。我查看了互联网,发现其中包含有关python decimal类的信息

这似乎是我问题的完美解决方案,但是当尝试这种方法时,我无法添加数字并将其保存到变量中。在回到原始站点寻找答案后,我找不到任何涉及变量的内容。但是这一页太长了,我很容易就漏掉了一些东西

这是我的代码,没有小数部分也可以正常工作:

from decimal import *
getcontext().prec = 30

n = 0
value = 1 / 2
while True:
    n += 1
    top = 1
    bottom = 2 ** (2 * n + 1) * (2 * n + 1) * 2
    for i in range(n):
        top *= 2 * i + 1
        if i != 0: bottom *= 2 * i + 2

    value += Decimal(top) / Decimal(bottom)
    print(value * 6)
编辑: 这是我收到的错误:

TypeError: unsupported operand type(s) for +=: 'float' and 'decimal.Decimal'

这是我第一次使用这个类,我不确定如何继续。

是的,这是因为不支持向小数添加浮点数,请首先将
值(
浮点数
)设为
十进制

value = Decimal(1/2)
错误是明确的,告诉你这一点,说错误起源于哪里,是哪个操作符引起的,它得到了什么类型


请务必查看文档中为
decimal
提供的,如果使用decimal,您可能会对它感兴趣。

是的,这是因为不支持向decimal添加浮点数,请首先将
value
(the
float
)设为
decimal

value = Decimal(1/2)
错误是明确的,告诉你这一点,说错误起源于哪里,是哪个操作符引起的,它得到了什么类型


请务必查看文档中提供的十进制数,如果使用十进制数,您可能会对它感兴趣。

@StefanPochmann我已经更新了我的question@StefanPochmann我已经更新了我的问题谢谢你,事后看来它看起来很简单!该程序现在按预期运行。@Jean-Françoisfar我本来打算去的,但我不得不等10分钟,我现在想谢谢你,事后看来,这似乎很简单!这个程序现在按计划运行了。@Jean-Françoisfar我本来打算去的,但现在我不得不等10分钟左右