如何将十进制值存储为变量
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,我不确定如何继续。
是的,这是因为不支持向小数点添加浮点数,首先将 value
(float
)设为 Decimal
:
value = Decimal(1/2)
这个错误是明确告诉你的,说错误起源于哪里,哪个运算符导致它以及它得到的类型。
请查看 decimal
文档中提供的 Decimal FAQ,如果使用小数,它包含您可能感兴趣的 Q。
我正在编写一个程序,该程序使用无限和非常快速地计算 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,我不确定如何继续。
是的,这是因为不支持向小数点添加浮点数,首先将 value
(float
)设为 Decimal
:
value = Decimal(1/2)
这个错误是明确告诉你的,说错误起源于哪里,哪个运算符导致它以及它得到的类型。
请查看 decimal
文档中提供的 Decimal FAQ,如果使用小数,它包含您可能感兴趣的 Q。