用Python语言,求s=4*(1-1/3+1/5-1/7+...+1/n,当s前三位数字首次为3.14时的n值。
while循环方便点,一个实现如下,供参考:
参考链接:
https://www.cnblogs.com/xiaozhengzheng/p/15811202.html
def getTwoPoint(s): # 返回保留两位小数的结果
# https://www.cnblogs.com/xiaozhengzheng/p/15811202.html
dataStr = str(s)
twoPoint = dataStr[0:4]
data = float(twoPoint)
return data
up=1 # 分子
n=1 # 分母
flag=1 # 符号位
single=flag*up/n # 第一项的值
s=single # 括号内和初始赋值为第一项的值
data=getTwoPoint(4*s) # 计算第一项结果的两位小数
#print("n=",n,",flag=",flag,"single=",single,"s=",s,"4*s",4*s,"data=",data)
while data!=3.14: # 如果结果不是3.14,则一直循环
n=n+2 # 分母每次递增2
flag=-flag # 符号位变化
single=flag*up/n # 计算当前项的值
s=s+single # s累加当前项的值
data=getTwoPoint(4*s) # 计算当前的结果,保留两位小数
# print("n=",n,",flag=",flag,"single=",single,"s=",s,"4*s",4*s,"data=",data)
# 打印结果
print(n)