2014-09-11 16 views
7

Desidero che i miei numeri di uscita Python (2.4.3) abbiano un determinato formato. In particolare, se il numero è un decimale terminante con < = 6 cifre significative, mostra tutto. Tuttavia, se ha> 6 cifre significative, emette solo 6 cifre significative.Come far fluttuare il formato Python con una certa quantità di cifre significative?

"A" mostra come Python sta scrivendo i float. "B" mostra come li voglio scritti. Come posso fare in modo che Python formi i miei numeri in quel modo?

A: 
10188469102.605597 
5.5657188485 
3.539 
22.1522612479 
0 
15.9638450858 
0.284024 
7.58096703786 
24.3469152383 

B: 
1.01885e+10 
5.56572 
3.539 
22.1523 
0 
15.9638 
0.284024 
7.58097 
24.3469 
+0

I galleggianti non hanno la precisione richiesta per rendere possibile ciò. –

+0

_ "Formato decimale" _ - Penso che tu intenda "formato float", perché ['Decimal'] (https://docs.python.org/2/library/decimal.html) è una libreria in Python. –

+0

@BurhanKhalid sì, hai ragione. – user1145925

risposta

17

si vorrà il modificatore g per format che cade zeri non significativi;

>>> "{0:.6g}".format(5.5657188485) 
'5.56572' 
>>> "{0:.6g}".format(3.539) 
'3.539' 

Siamo spiacenti, il mio aggiornamento include anche il fatto che io sono costretti ad usare Python 2.4.3, che non ha funzione di formattazione().

Gli identificatori di formato funzionano anche senza la funzione .format():

>>> for i in a: 
... print '%.6g' % (i,) 
... 
1.01885e+10 
5.56572 
3.539 
22.1523 
0 
15.9638 
0.284024 
7.58097 
24.3469 
+0

Ho aggiornato la mia domanda con un grande numero nell'esempio – user1145925

+0

@ user1145925 Per quanto posso vedere, il formato fornisce il risultato esatto 'B'. –

+0

Spiacente, il mio aggiornamento include anche il fatto che sono limitato all'utilizzo di Python 2.4.3, che non ha la funzione format(). – user1145925

2

provare questo modo

a=[10188469102.605597,5.5657188485,3.539,22.1522612479,0,15.9638450858,0.284024,7.58096703786,24.3469152383] 

for i in a: 
    if i >100: 
     print '{:.6e}'.format(i) 
    else: 
     print '{:.6f}'.format(i) 

per versione dei pitone

for i in a: 
    if i >100: 
     print '%6e'%i 
    else: 
     print '%6f'%i 

uscita

012.351.
1.018847e+10 
5.565719 
3.539000 
22.152261 
0.000000 
15.963845 
0.284024 
7.580967 
24.346915 
+0

Non riesco a utilizzare la funzione format(). Questo non è disponibile per Python 2.4.3. – user1145925