2017-08-04 62 views
-2

我需要5/7转换为20小数 以下不工作(好像最大精度为15):四舍五入到n十进制问题

format(float(5)/float(7), '.%20f')输出0.714285714285714301575

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

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

+2

您是否尝试过使用十进制类型... 'from decimal import * 十进制(5)/十进制( 7)' https://docs.python.org/2/library/decimal.html – jcfollower

+1

请参阅此处的提示:https://docs.python.org/3/tutorial/floatingpoint.html#representation-error – Arseniy

+0

应该如何处理我是十进制(5)/十进制(7)? –

回答

1

工作对我来说是这样

对于Python 3.X

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

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

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

对于Python 2.X

>>> '{:.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' 
+0

OP想转换'5/7',你为什么不使用这些值? – martineau

+0

没理由,我只是随机挑选。您也可以使用5/7,它将工作 –

+0

'{:.20f}'。format(5/7.0)给出'0.71428571428571430157'给出正确的字符串,但我需要float和float('{:。20f}'.format (5/7.0))给出不正确的结果。 –