2016-04-27 17 views

Antwort

-1

Der Fehler ist, dass ersetzt nicht s ändert. So behebt s = s.replace... alles. Schließlich sollte es einfach so aussehen, wo der Druck Teil optional ist:

s = str("2e-3") 
s = s.replace("e", "*10^") 
print(s) 

mit dem Ausgang:

2*10^-3 
+0

Sie sagen also, dass "0.002" replace ("e", "* 10 ^") irgendwie "2 * 10^-3" erzeugt? Es tut es nicht. Ihre Antwort beantwortet nicht Ihre eigene Frage. – vaultah

-3

Plase s = str('2e-3') verwenden.

Für s = str(2e-3), ich werde 2e-3 berechnen, wird das Ergebnis ein flaot sein, dann das Ergebnis zu string konvertieren.

1

Verwenden Format eine Zeichenfolge, die die Zahl in wissenschaftlicher Notation zu bekommen, und dann ersetzen 'e'

s = '{:.2e}'.format(any_number).replace("e", "*10^") 

die .2 in {:.2e} für zwei Dezimalstellen fragen also, wenn any_number==0 Sie erhalten 0,00 * 10^+ 00 und für 0,002, 2,00 * 10^-03.

Wenn Sie spezielle Fälle behandeln möchten, können Sie die formatierte Zeichenfolge in die Mantisse und Exponent Strings aufgeteilt und dann zum Beispiel, entferne eine führende ‚+‘ und Null aus dem Exponenten

ms,es='{:.2e}'.format(any_number).split('e') 
if len(es)==3 and es[1]=='0': es = es[0] + es[2] 
es = es.replace('+','') 
s = ms + '*10^' + es