virgola - troncare un numero in python




Converti il numero in virgola mobile in una certa precisione, quindi copia nella stringa (5)

Ho un numero in virgola mobile, diciamo 135.12345678910 . Voglio concatenare quel valore a una stringa, ma voglio solo 135.123456789 . Con la stampa, posso farlo facilmente facendo qualcosa come:

print "%.9f" % numvar

con numvar è il mio numero originale. C'è un modo semplice per farlo?



Con Python <3 (ad es. 2.6 [vedi commenti] o 2.7), ci sono due modi per farlo.

# Option one
older_method_string = "%.9f" % numvar

# Option two
newer_method_string = "{:.9f}".format(numvar)

Si noti che per le versioni di Python superiori a 3 (ad esempio, 3.2 o 3.3), l'opzione due è preferred .

Per maggiori informazioni sull'opzione 2, suggerisco questo collegamento sulla formattazione delle stringhe dalla documentazione di Python .

E per maggiori informazioni sull'opzione 1, questo link sarà sufficiente e ha informazioni sulle varie bandiere .

Python 3.6 (versione ufficiale nel dicembre 2016), aggiungerà il valore letterale stringa f , vedere più informazioni qui , che estende il metodo str.format (uso di parentesi graffe in modo tale che f"{numvar:.9f}" risolva il problema originale ).


Nel caso in cui la precisione non sia nota fino al runtime, questa altra opzione di formattazione è utile:

>>> n = 9
>>> '%.*f' % (n, numvar)
'135.123456789'

Non è la stampa che fa la formattazione, è una proprietà di stringhe, quindi puoi semplicemente usarla

newstring = "%.9f" % numvar

Utilizzando round:

>>> numvar = 135.12345678910
>>> str(round(numvar,9))
'135.123456789'
>>>




floating-point