代码运行的时候截取的小数位数截取不到所需要的部分,怎么才能取到小数点后1000000位
import math
p = math.pi
print(p)
p_0 = str(p).split('.')[0]
p_1 = str(p).split('.')[1]
p_point = p_1[0:100]
p_new = p_0 + '.' + p_point
p_new_number= float(p_new)
print(p_new_number)
普通的PI无法获取高精度,普通pi只能精确到15位,需要通过sympy模块来获取高精度PI,但是比较耗时,我这里获取小数点后1000100位数字大约耗时3分钟。
先贴代码,然后是sympy模块的安装过程。
一、代码:
from sympy import *
p_1=N(pi,1000101) # 精度到小数点后1000100位,N()的第二个参数是PI中的数字长度,包含了小数点前的3
# print(p_1)
strNmb=str(p_1).split('.')
bh = strNmb[1][1000000-1:1000100-1] # 获取第1000000到第1000100位之间的字符串
# print(bh) # 打印
s = 0 # 累加求和
for v in bh:
s = s + int(v) # 累加求和
print(s) # 输出结果
二、安装sympy模块
以pycharm安装sympy为例:
(1)点击File >> Settings,打开Settings面板
(2)搜索Project ,找到Python Interpreter,点击右侧的+号,在输入框中输入sympy,在列表中找到sympy,点击列表下方的Install package,等待安装完毕即可。如图:
p从哪里来的,里面是什么内容,为什么要按照小数点分割。