nchkommastellen bei float in write befehl

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Christian80
User
Beiträge: 4
Registriert: Montag 29. März 2010, 09:24

Dienstag 30. März 2010, 10:23

Hallo Forum,

ich suche eine Möglichkeit, die Anzahl der Nachkommastellen einer Fließkommazahl in einem write Befehl festzulegen. Es gibt zwar viele Posts zu Nachkommastellen, aber nur in Verbindung mit print. Ich will aber mit write in eine exteren Datei schreiben, wobei immer eine feste stellenanzhal gegeben sein soll, um die so erstellen tabellen später in Excel einlesen zu können. Im speziellen tritt das Problem bei der Ausgabe von 0 auf, es sollte also 0.0000000 ausgegeben werden.
Irgendwie funktioniert es auch nicht mit round(), angeblich würde er eine float-Zahl brauchen, aber nach einem py_get_float(str) sollte es sich um eine float-Zahl handeln... :s

Für Lösungsvorschläge dankbar
Christian
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Dienstag 30. März 2010, 10:27

Schon mal versucht, die Lösungen für 'print' auf 'write' zu übertragen?
Christian80
User
Beiträge: 4
Registriert: Montag 29. März 2010, 09:24

Dienstag 6. April 2010, 09:48

Das Übertragen auf den write-Befehl hat nicht funktioniert.
Da das Problem aber nur bestand, sobald die Zahl "0" eingetragen wird, habe ich jetzt einfach eine if-Anweisung, wenn es "0" ist, soll er eben mehr Freistellen zwischen den Spalten setzen, sonst die normale Anzahl. Vllt etwas unfein, aber bringt das geünschte Ergebnis.
dahaze
User
Beiträge: 74
Registriert: Freitag 13. März 2009, 10:57
Wohnort: im Schwabenland

Dienstag 6. April 2010, 11:06

Hallo !

Ich versteh dein Problem irgendwie nicht so ganz!? Funktioniert doch einwandfrei:

Code: Alles auswählen

>>> fptr = open(r'M:\test.txt','w')
>>> zahl = 0.0
# Zahl mit 10 Nachkommastellen schreiben:
>>> fptr.write('%.10f' % zahl)
>>> fptr.close()
>>> fptr = open(r'M:\test.txt','r')
>>> fptr.read()
'0.0000000000'
>>> fptr.close()
>>> 
Gruß,
dahaze
Antworten