Python:Float无限长度(精确浮点数)

d0n*_*key 4 python pi floating-point-precision

我的代码:

def calc_pi(acc):
     pos = False
     sum = 4.0
     for i in range(2, acc):
          if not pos:
               sum -= 4.0/(2*i-1)
               pos = True
          else:
               sum += 4.0/(2*i-1)
               pos = False
     return float(sum)

print(calc_pi(5000))
Run Code Online (Sandbox Code Playgroud)

当然,我正在尝试计算一个pi,超过10个后点数.但是Python似乎要回到10.有一种简单的方法可以阻止它这样做吗?像一百万个后点数字?

谢谢!

mus*_*_ut 8

您可以使用标准库提供的Decimal类.

来自文档:

与基于硬件的二进制浮点不同,十进制模块具有用户可更改的精度(默认为28个位置),可以与给定问题所需的一样大:

  >>> from decimal import *
  >>> getcontext().prec = 6
  >>> Decimal(1) / Decimal(7)
  Decimal('0.142857')
  >>> getcontext().prec = 28
  >>> Decimal(1) / Decimal(7)
  Decimal('0.1428571428571428571428571429')
Run Code Online (Sandbox Code Playgroud)