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.有一种简单的方法可以阻止它这样做吗?像一百万个后点数字?
谢谢!
您可以使用标准库提供的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)