Python 四舍五入到n个十进制问题

Python 四舍五入到n个十进制问题,python,Python,我需要将5/7转换为20小数位 以下情况不起作用(似乎最大精度为15): 格式(float(5)/float(7),'.%20f')输出为0.714285714285714301575 round(float(n)/float(d)*10**20)/10**20输出为0.714285714286 我做错了什么?浮点的最大精度是多少?对我来说就是这样 用于Python 3.X >>> '{:.9f}'.format(8/3) '2.666666667' >>>

我需要将
5/7
转换为
20
小数位 以下情况不起作用(似乎最大精度为15):

格式(float(5)/float(7),'.%20f')
输出为
0.714285714285714301575

round(float(n)/float(d)*10**20)/10**20
输出为
0.714285714286

我做错了什么?浮点的最大精度是多少?

对我来说就是这样

用于Python 3.X

>>> '{:.9f}'.format(8/3)
 '2.666666667'

>>> '{:.15f}'.format(8/3)
 '2.666666666666667'

>>> '{:.20f}'.format(8/3)
 '2.66666666666666651864'
>>> '{:.20f}'.format(8.0/3)
 '2.66666666666666651864'

>>> '{:.20f}'.format(8/3.0)
 '2.66666666666666651864'

>>> '{:.20f}'.format(float(8)/3)
 '2.66666666666666651864'

>>> '{:.20f}'.format(8/float(3))
 '2.66666666666666651864'
用于Python 2.X

>>> '{:.9f}'.format(8/3)
 '2.666666667'

>>> '{:.15f}'.format(8/3)
 '2.666666666666667'

>>> '{:.20f}'.format(8/3)
 '2.66666666666666651864'
>>> '{:.20f}'.format(8.0/3)
 '2.66666666666666651864'

>>> '{:.20f}'.format(8/3.0)
 '2.66666666666666651864'

>>> '{:.20f}'.format(float(8)/3)
 '2.66666666666666651864'

>>> '{:.20f}'.format(8/float(3))
 '2.66666666666666651864'

您是否尝试过使用十进制类型<代码>从十进制导入*decimal(5)/decimal(7)请参见此处提示:我应该如何对十进制(5)/decimal(7)进行四舍五入?问题中的第一行代码会导致
ValueError:Python 2和3中的格式说明符缺少精度。使用
format()
函数时,不需要将
%
放入格式字符串中。尝试使用
格式(float(5)/float(7),'.20f')
,它将给出
'0.71428571428571430157'
。OP想要转换
5/7
,为什么不使用这些值?没有原因,我只是随机选择。您也可以使用5/7,它将运行“{.20f}”。格式(5/7.0)给出“0.71428571428571430157”给出正确的字符串,但我需要浮点和浮点({.20f})。格式(5/7.0))给出错误的结果。浮点转换将缩短。您可以使用四舍五入((8/3),20)表示浮点,但浮点有16个小数点的限制。什么类型没有这样的限制?