2016-09-18 16 views
6

Próbuję zmniejszyć liczbę miejsc po przecinku, które otrzymuję po pewnych obliczeniach. print() gdzie powstaje mój problem wygląda następująco:Python numpy notacja naukowa limit dziesiętny

print("Mean resistivity: {res} Ohm m".format(res=np.mean(resistivity))) 

I wyprowadza to:

Mean resistivity: 1.6628449915450776e-08 Ohm m 

Teraz chcę zmniejszyć liczbę miejsc po przecinku, które są drukowane na 3. Próbowałem to robić z formatowanie ciąg tak:

print("Mean resistivity: {res:.3f} Ohm m".format(res=np.mean(resistivity))) 

Jednakże, ten kod drukuje:

Mean resistivity: 0.000 Ohm m 

Co faktycznie chcę to:

Mean resistivity: 1.663e-8 Ohm m 

Jak mogę sformatować res być wyświetlane tylko w notacji naukowej, ale tylko 3 z miejscami po przecinku?

+0

użyć format wydruku [specyfikatora] (https://docs.python.org/2/library/string.html #formatspec) – dawg

Odpowiedz

6

To python3? Jeśli tak to powinno działać: {res:.3E}

@edit To powinno działać również z python2 - spec

+0

Potwierdzono również w Pythonie 3 – Jeon

+0

Tak, dziękuję! Działa :) Działa również z małymi literami 'e'. Przechodząc do zakładki tej dokumentacji – Dartmouth

+1

@Dartmouth powinieneś wiedzieć, że po przejściu do Pythona 3.x, są nieznaczne udoskonalenia tego, które można znaleźć w dokumentacji 2.x. Należy również zauważyć, że python 3.6 (jeśli wkrótce pojawi się) ma jeszcze prostszą implementację, która ma ten sam język mini-formatowania. dodaj to do zakładek na przyszłość ... https://docs.python.org/3.6/reference/lexical_analysis.html#f-strings – NaN