float --> str mit variablen Nachkommastellen

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
KlausMerkert
User
Beiträge: 22
Registriert: Freitag 22. Mai 2009, 11:16

Liebe Forumsteilnehmer,

wahrscheinlich stelle ich eine für Experten sehr einfache Frage, die ich trotz intensiver Suche nicht aus Handbuch und Internet beantworten kann.
In PASCAL gibt es eine Konvertierungsfunktion Str(x:1:2), die ein float x mit minimalen Gesamtstellen und 2 Nachkommastellen darstellt. Ich weiß, wie man das in Python macht. Ich weiß aber nicht, wie für die Nachkommastellen eine Variable, z.B. ns, eingesetzt werden kann, dh. die Nachkommastellen soll man berechnen können. In PASCAL ging das ganz einfach über Str(x:1:ns).

Viele Grüße

Klaus Merkert
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

KlausMerkert
User
Beiträge: 22
Registriert: Freitag 22. Mai 2009, 11:16

Lieber User cofi,

ich habe sehr wohl die angegebene Dokumentation gelesen. Es gibt für mich dabei zwei Probleme:
1. ich benutze Python 2.5
2. ich habe keine Lösung für mein Problem erkannt (was habe ich übersehen?)
Ich wiederhole also meine Bitte um eine Lösung meines Beispiels.

Viele Grüße

Klaus Merkert
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Code: Alles auswählen

"%10.3f" % 3.14159
Das steh so aber auch in dem zweiten Link von cofi.
Das Leben ist wie ein Tennisball.
KlausMerkert
User
Beiträge: 22
Registriert: Freitag 22. Mai 2009, 11:16

Das ist nicht mein Problem. In dem angegebenen Beispiel sind 3 Nachkommastellen fest vorgegeben. Ich möchte aber statt der 3 eine Variable, z.B. ns stehen haben.

Viele Grüße

Klaus Merkert
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das bisschen Abstraktion kann man aber schon erwarten:

Code: Alles auswählen

"%%%d.%df" % (10, 3) % 3.14159
Das Leben ist wie ein Tennisball.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

6.6.2 String Formatting Options hat geschrieben:Precision (optional), given as a '.' (dot) followed by the precision. If specified as '*' (an asterisk), the actual width is read from the next element of the tuple in values, and the value to convert comes after the precision.
Demnach:

Code: Alles auswählen

In [1]: "%1.*f" % (4, 3.14156)
Out[1]: '3.1416'
Nur seltsam, dass er rundet oO
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

cofi hat geschrieben:Nur seltsam, dass er rundet oO
Ich fände es seltsam, wenn nicht gerundet werden würde. Andernfalls geht Genauigkeit verloren.
Das Leben ist wie ein Tennisball.
KlausMerkert
User
Beiträge: 22
Registriert: Freitag 22. Mai 2009, 11:16

Vielen herzlichen Dank,

das ist es, was ich brauche

Code: Alles auswählen

>>> ns=2
>>> "%1.*f" % (ns,3.14159)
'3.14'
Es tut mir leid, dass ich es überlesen habe.

Viele Grüße

Klaus Merkert
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

KlausMerkert hat geschrieben:Es tut mir leid, dass ich es überlesen habe.
Das muss dir ja nicht Leid tun, aber man kann schon erwarten, dass jemand länger als 11 Minuten Dokumentation liest, etwas googlet und ausprobiert ;-)
Das Leben ist wie ein Tennisball.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

EyDu hat geschrieben:
cofi hat geschrieben:Nur seltsam, dass er rundet oO
Ich fände es seltsam, wenn nicht gerundet werden würde. Andernfalls geht Genauigkeit verloren.
Da ist natürlich was dran :oops:
KlausMerkert hat geschrieben:Es tut mir leid, dass ich es überlesen habe.
Nicht schlimm ;) Der Satz versteckt sich aber auch hinterhältig mitten in der Aufzählung.
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Die Sache mit dem Asterisk ist ja cool. Hatte ich schon mehrmals drueber gegruebelt ob das irgendwie geht und hab dann am Ende doch immer rjust benutzt. :D
Antworten