Frage zu Formatsequenzierung

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
usta
User
Beiträge: 12
Registriert: Sonntag 5. Oktober 2008, 13:34
Wohnort: Bremen

Dienstag 4. November 2008, 11:11

Hallo,

folgendes: ich habe eine zahl vom typ float, wert = 10.0 .wenn ich nun folgendes mache:

Code: Alles auswählen

zahl = float(10)
neuezahl = ("%5.3e" % zahl)
print neuezahl
kommt folgendes ergebniss: "1.000e001", was ja richtig ist, aber ich würde gerne selber bestimmen, wieviele vorkommastellen die zahl im exponentialformat haben soll. gibt es dafür eine einfache funktion.

wenn ich das von "hand" machen muss (float in string umwandeln, splitten, rechnen, etc,...), dann lohnt sich für mich der Aufwand nicht, da es nur eine verschönerung ist. aber vielleicht gibt es eine einfache methode, mit der es schnell gemacht ist ??

:?:
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Dienstag 4. November 2008, 11:42

Meines Wissens gibt es unabhängig von Python beim wissenschaftlichen Format immer nur eine Vorkommastelle. Auf jeden Fall ist mir bei der Python-String-Formatierung keine Möglichkeit zur Änderung der Vorkomma-Stellen im wissenschaftlichen Format bekannt.
MfG
HWK
usta
User
Beiträge: 12
Registriert: Sonntag 5. Oktober 2008, 13:34
Wohnort: Bremen

Dienstag 4. November 2008, 11:48

alles klar,

ich danke dir HWK,.... :D
BlackJack

Dienstag 4. November 2008, 11:53

@usta: Was meinst Du mit Vorkommastellen? Zusätzliche Leerzeichen? Mit Nullen aufgefüllt?

Code: Alles auswählen

In [257]: "%20.3e" % 10
Out[257]: '           1.000e+01'

In [258]: "%020.3e" % 10
Out[258]: '000000000001.000e+01'
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Dienstag 4. November 2008, 15:01

Ergänzend zu HWK:
Man unterscheidet in der Regel zwischen wissenschaftlicher und technischer Notation. Bei wissenschaftlicher Notation steht vor dem Komma genau eine Ziffer (außer Null), bei technischer Notation eine maximal dreistellige Zahl, so dass der Exponent der Zehnerpotenz ein Vielfaches von 3 ist. In allen Fällen jeweils ggf. zusätzlich mit Vorzeichen versteht sich.
usta
User
Beiträge: 12
Registriert: Sonntag 5. Oktober 2008, 13:34
Wohnort: Bremen

Mittwoch 5. November 2008, 08:37

@usta: Was meinst Du mit Vorkommastellen? Zusätzliche Leerzeichen? Mit Nullen aufgefüllt?
nein, ich meine damit dass, der punkt einen zurückrückt. das heisst, die mantisse wird größer, der exponent kleiner:

Beispiel:

1.00e+01 ist das gleiche wie 10.0e+00, wobei ich gerne es gerne in der zweiten Form hätte.

so wie es BlackJack erklärt hat, wäre also die technische notation genau das richtige für mich. python verwendet anscheinend die wissenschaftliche notation,....
Antworten