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

时间:2017-02-11 11:28:10

标签: python python-3.x infinite pi

我正在编写一个使用无限和来快速计算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'

这是我第一次参加这个课程,我不确定如何继续学习。

1 个答案:

答案 0 :(得分:2)

是的,这是因为不支持将浮点数添加到小数位,首先使valuefloatDecimal成为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,如果使用小数,则可能会感兴趣。