Seite 1 von 1

auffüllen eines floats mit nullen ohne %-operator

Verfasst: Dienstag 23. März 2010, 15:51
von dall♀
hi,

ich möchte floats als strings ausgeben und hab dabei eine feste anzahl von nachkommastellen. wenn beim runden allerdings hinten eine 0 rauskommt, wird die abgeschnitten - das will ich verhindern.
der %-operator steht außer frage, weil die genauigkeit in einer variable gespeichert ist.

Code: Alles auswählen

prec = 2
value = 123.499999
print round(value, prec)
würde 123.5 und nicht 123.50 ergeben.

sowas wie

Code: Alles auswählen

print '%. ' + str(prec) + 'f' % value
hab ich sogar auch ausprobiert ^^ da seht ihr mal, wie verzweifelt ich bin ;D

erbitte hilfe! es ist doch sicher ganz primitiv..

Verfasst: Dienstag 23. März 2010, 15:55
von Darii
Deine „Verzweiflungstat“ würde sogar funktionieren, wenn du eine Klammer um deine String-Addition machen und das Leerzeichen im ersten Teilstring weglassen würdest.

Verfasst: Dienstag 23. März 2010, 15:56
von numerix

Code: Alles auswählen

>>> prec = 2
>>> value = 123.4999999999
>>> print "%.*f" %(prec,value)
123.50

Verfasst: Dienstag 23. März 2010, 17:10
von lunar
Ab 2.6 funktioniert auch:

Code: Alles auswählen

>>> '{0:.{1}f}'.format(123.4999999, 2)
'123.50'

Verfasst: Mittwoch 24. März 2010, 08:10
von jens
Ist evtl. moneyfmt() gesucht, siehe: http://docs.python.org/library/decimal.html?#recipes

Verfasst: Mittwoch 24. März 2010, 16:32
von str1442
Oder str.zfill(width) / str.rjust("0", width).

danke :)

Verfasst: Donnerstag 8. April 2010, 14:44
von dall♀
spitze, vielen dank! :)
numerix hat geschrieben:

Code: Alles auswählen

>>> prec = 2
>>> value = 123.4999999999
>>> print "%.*f" %(prec,value)
123.50
das habe ich letztendlich benutzt, aber eure vorschläge auch ausprobiert.. hat super geklappt :)