Ho una funzione che accetta argomenti float (generalmente numeri interi o decimali con una cifra significativa) e ho bisogno di produrre i valori in una stringa con due cifre decimali (5 -> 5.00, 5.5 -> 5.50, ecc.). Come posso farlo in Python?
Ho una funzione che accetta argomenti float (generalmente numeri interi o decimali con una cifra significativa) e ho bisogno di produrre i valori in una stringa con due cifre decimali (5 -> 5.00, 5.5 -> 5.50, ecc.). Come posso farlo in Python?
Risposte:
Poiché questo post potrebbe essere qui per un po ', segnaliamo anche la sintassi di Python 3:
"{:.2f}".format(5)
formattazione f-string :
Questo era nuovo in Python 3.6: la stringa è racchiusa tra virgolette come al solito, preceduta f'...
nello stesso modo in cui si farebbe r'...
per una stringa non elaborata. Quindi inserisci tutto ciò che vuoi inserire nella stringa, nelle variabili, nei numeri, all'interno delle parentesi graffe f'some string text with a {variable} or {number} within that text'
e Python valuta come con i precedenti metodi di formattazione della stringa, tranne per il fatto che questo metodo è molto più leggibile.
>>> a = 3.141592
>>> print(f'My number is {a:.2f} - look at the nice rounding!')
My number is 3.14 - look at the nice rounding!
Come puoi vedere in questo esempio, formattiamo con le cifre decimali in modo simile ai precedenti metodi di formattazione delle stringhe.
NB a
può essere un numero, una variabile o anche un'espressione ad es f'{3*my_func(3.14):02f}'
.
Andando avanti, con il nuovo codice preferisco le f-string rispetto ai comuni metodi% s o str.format () poiché le f-string possono essere molto più leggibili e spesso sono molto più veloci .
Formattazione delle stringhe:
print "%.2f" % 5
math.floor
, math.ceil
oppureround
Formattazione delle stringhe:
a = 6.789809823
print('%.2f' %a)
O
print ("{0:.2f}".format(a))
La funzione rotonda può essere utilizzata:
print(round(a, 2))
La cosa buona di round () è che possiamo archiviare questo risultato in un'altra variabile e quindi usarlo per altri scopi.
b = round(a, 2)
print(b)
round
. Non deve essere utilizzato solo a scopo di visualizzazione .
round(5.0001, 2)
-> 5.0
, no'5.00'
La sintassi più breve di Python 3:
n = 5
print(f'{n:.2f}')
So che è una vecchia domanda, ma stavo faticando a trovare la risposta da solo. Ecco cosa mi è venuto in mente:
Python 3:
>>> num_dict = {'num': 0.123, 'num2': 0.127}
>>> "{0[num]:.2f}_{0[num2]:.2f}".format(num_dict)
0.12_0.13
Utilizzando la sintassi di Python 3:
print('%.2f' % number)
Se desideri ottenere un valore in virgola mobile con due cifre decimali limitate al momento dell'input della chiamata,
Dai un'occhiata ~
a = eval(format(float(input()), '.2f')) # if u feed 3.1415 for 'a'.
print(a) # output 3.14 will be printed.
eval
una stringa quando potresti semplicemente round
? Ad ogni modo, questo non funziona nemmeno correttamente, poiché se si alimenta 5
, si ottiene 5.0
invece 5.00
come vuole OP.
nan
e inf
.
d=3
, la sintassi è"{:.{}f}".format(5, d)