Begrenzte Ziffern mit str.format (), und dann nur, wenn es wichtig ist

Wenn wir einen Dollarbetrag drucken, wollen wir normalerweise immer zwei Dezimalstellen anzeigen.

cost1, cost2 = 123.456890123456789, 357.000 print '{c1:.2f} {c2:.2f}'.format(c1=cost1, c2=cost2) 

zeigt an

 123.46 357.00 

Aber bei anderen Gelegenheiten möchten wir die Fraktionen nur ausdrucken, wenn es ihnen wichtig ist. Wenn die beiden Zahlen oben waren, zum Beispiel, können wir es vorziehen, anzuzeigen

 123.45 gal. 357 gal. 

Kann man das direkt mit dem format ?

One Solution collect form web for “Begrenzte Ziffern mit str.format (), und dann nur, wenn es wichtig ist”

In String-Formatierungsoperationen beschreibt Python Docs das %g Format, das nachlaufende Nullen trennt.

 >>> print "%g gallons" % (123.45) 123.45 gallons >>> print "%g gallons" % (357) 357 gallons >>> print "%g gallons" % (357.0) 357 gallons 

Oder mit Python 3 String Formatierung :

 >>> print "{:g} gal {:g} gal".format(123.45, 357.0) 123.45 gal 357 gal 

Der g Formatierer ist unintuitiv, aber man kann einige interessante Ergebnisse erzielen, indem man die Präzision setzt :

 >>> print "{:g} gal {:.3g} gal {:.4g} gal {:.5g} gal {:.6g} gal {:.7g} gal".format(*([123.456789] * 6)) 123.457 gal 123 gal 123.5 gal 123.46 gal 123.457 gal 123.4568 gal 

Beachten Sie, dass in diesem Fall die Präzision auf .5 das gewünschte Ergebnis von 2 Dezimalstellen erreicht.

Natürlich könntest du das mit f Fließkomma-Formatierer kombinieren, um zu bekommen, was du wolltest.

Python ist die beste Programmiersprache der Welt.