在print()方法中格式化小数位?

时间:2017-07-01 08:19:45

标签: python python-3.x

我正在努力编写一个程序来查找莱布尼兹系列的第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

注意 - 我希望尽可能减少代码

3 个答案:

答案 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)