我正在努力编写一个程序来查找莱布尼兹系列的第n个词。
我想在不同的行上打印最多15位小数的答案。
代码。
a=[]
for _ in range(int(input().strip())):
n=int(input().strip())
a.append(sum([(-1)**i/(2*i+1) for i in range(n)]))
print("\n".join(str(i) for i in a))
我的输出:
0.7604599047323508
0.77290595166696
预期产出:
0.760459904732351
0.772905951666960
注意 - 我希望尽可能减少代码
答案 0 :(得分:2)
如果你愿意,
0.7604599047323508
四舍五入最多15个小数位,如下所示,
0.760459904732351
这非常简单:
i = 0.7604599047323508
print(i)
print("%.15f" % i)
输出:
0.7604599047323508
0.760459904732351
如果十进制长度小于15,则添加0
s。看看,
x = 0.760459904732 #Less than 15
print(x)
print("%.15f" % x)
输出:
0.760459904732
0.760459904732000
<强>更新强>
您也可以使用内置功能round()
。
round(value,places)
示例:
>>> a=0.7604599047323508
>>> round(a,15)
0.760459904732351
代码:使用print()
a=[]
for __ in range(int(input().strip())):
n=int(input().strip())
a.append(sum([(-1)**i/(2*i+1) for i in range(n)]))
for i in a:
print("%.15f" % i)
另外,为什么要使用_
?请改用其他名称。要了解_
在翻译中尝试此操作的目的。
>>> a=10
>>> b=20
>>> a+b
30
>>> _
30
>>> a*10000
100000 variable name.
>>> _
100000
>>> a
10
_
将最新的计算存储在解释器中。 _
用作一次性变量__
优于_
我猜。
答案 1 :(得分:0)
您可以使用Decimal module来获得精确的精确度
from decimal import *
for x in range (0,int(input())):
s,n=Decimal('0'),int(input())
for i in range(0,n):
s+= Decimal(str(((-1)**i)/((2*i)+1)))
print (s)
答案 2 :(得分:-1)
你走了:
"\n".join("{:.15f}".format(i) for i in a)