Eğer o zaman, ondalık nokta sonra yerlerde bir sabit sayıdan fazla gerekmez eminseniz:
>>> from numpy import r_
>>> a = r_[10**(-9), 10**(-3), 3*10**(-3), 6*10**(-3), 9*10**(-3), 1.5*10**(-2)]
>>> for x in a: print "%.1e"%x
...
1.0e-09
1.0e-03
3.0e-03
6.0e-03
9.0e-03
1.5e-02
burada yakalamak, bir biçimi olarak son %.0e
kullanılacağını olduğudur numara 1e-2
EDIT'e olarak basılmış olacaktır: Eğer matplotlib
kullandığınız için, o zaman farklı bir hikaye: Eğer TeX render motorunu kullanabilirsiniz. Kirli hızlı ve-örnek:
fig = plt.figure()
ax = fig.add_subplot(111)
x = 1.5*10**(-2)
l = ("%.0e"%x).split("e")
x_str = r"$ %s \times 10^{%s}$" % (l[0], l[1])
ax.set_title(x_str)
plt.show()
gerçekten yeni .format
dize biçimlendirme ile biraz daha temiz olacağını.
EDIT2: Sadece şeyiyle ve ileride başvurmak üzere, burada yorumlardan OP'ın yolda almak benim:
İşte
x = 1.5*10**(-2)
l = ("%.0e"%x).split("e")
x_str = r"$%s \times 10^{%s}$" % (l[0], str(int(l[1])))
Ben bir int dönüştürürken ediyorum ve geri baştaki sıfırlar önlemek için: -02
- >-2
vb
str.format'ı da deneyebilirsiniz - http://docs.python.org/2/library/string.html#formatstrings – dmg
Grafiği nasıl oluşturuyorsunuz? Sadece bazı ASCII-art-benzeri arsa mı yoksa "matplotlib" mi yoksa başka kütüphaneler mi kullanıyorsunuz? – Bakuriu
'% s 10^(% s) '% (sayı1, sayı2)' çalışır? – dmg