2017-08-04 65 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))給出不正確的結果。 –