Mentre lavoravo con la precisione del galleggiante, mi sono imbattuto in un fatto strano. Perché python stampa solo la parte intera quando formattato con "%.f"
. Sono disposto a conoscere il meccanismo alla base di questoPrecisione float Python senza precisione intera dopo il punto decimale
>>> a = float(2.12345)
>>> a
2.12345
>>> print "%.2f" % a
2.12
>>> print "%.1f" % a
2.1
>>> print "%f" % a
2.123450
>>> print "%.f" % a
2 #why?
Grazie in anticipo per la spiegazione :)
Perché ' "% .F"' è la stessa di '" % .0f "'? – Selcuk
Per lo stesso motivo per cui '1.0' è lo stesso di' 1.', probabilmente. – TigerhawkT3
Questo comportamento sembra non definito. La precisione opzionale è [data come un ''.'' (punto) seguito dalla precisione] (https://docs.python.org/2/library/stdtypes.html # operazioni sulle stringhe di formattazione-). Analogamente, [la documentazione in formato mini-specificazione del formato] (https://docs.python.org/2/library/string.html#format-specification-mini-language) richiede un argomento per la precisione. Dato che 'int()' restituisce 0, sembra un valore predefinito ragionevole, ma un comportamento indefinito significa esattamente questo. – Chris