我正在编写一个使用无限和来快速计算pi到大量小数位的程序,22次迭代产生15个小数位。但是,由于python的限制,这是可以显示的最大小数位数。所以试着解决这个问题,我查看了互联网,发现this website包含有关python十进制类的信息。
这似乎是我问题的完美解决方案,但是在尝试此方法时,我无法添加数字并将其保存到变量中。回到原始网站找到答案后,我找不到涉及变量的任何内容。但这个页面很荒谬,我很容易错过一些东西。
这是我的代码,它在小数部分工作正常:
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'
这是我第一次参加这个课程,我不确定如何继续学习。
答案 0 :(得分:2)
是的,这是因为不支持将浮点数添加到小数位,首先使value
(float
)Decimal
成为value = Decimal(1/2)
:
decimal
错误是明确的告诉你这个,说明错误源自何处,哪个运算符导致它以及它得到了什么类型。
请查看copy hc_court_master (district_cd, category,category1,shrt_nm,court_name)
from 'D:\district.csv'
with (format csv)
文档中提供的Decimal FAQ,如果使用小数,则可能会感兴趣。