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

How to store decimal values as a varible

我正在编写一个程序,该程序使用无限和非常快速地计算 pi 到大量小数位,22 次迭代得到 15 位小数。但是,由于 python 的限制,这是可以显示的最大小数位数。所以尝试解决这个问题 我查看了互联网并发现 this website 包含有关 python 十进制 class.

的信息

这似乎是我问题的完美解决方案,但是在尝试此方法时我无法添加数字并将它们保存到变量中。回到原站找答案后,没有找到涉及变量的内容。但是页面长得可笑,我很容易漏​​掉一些东西。

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

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'

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

是的,这是因为不支持向小数点添加浮点数,首先将 valuefloat)设为 Decimal

value = Decimal(1/2)

这个错误是明确告诉你的,说错误起源于哪里,哪个运算符导致它以及它得到的类型。

请查看 decimal 文档中提供的 Decimal FAQ,如果使用小数,它包含您可能感兴趣的 Q。