小数点以下の桁数が固定数を超えないことが確実な場合は、次のようにします。
>>> 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
ここでの落とし穴は%.0e
、フォーマットとして使用する場合、最後の数値は次のように出力されることです。1e-2
編集:あなたが使用しているのでmatplotlib
、それは別の話です:あなたはTeXレンダリングエンジンを使用することができます。簡単で汚い例:
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()
.format
これは確かに、新しい文字列フォーマットを使用すると少しきれいになります。
EDIT2:完全性と将来の参考のために、コメントからのOPの方法についての私の見解は次のとおりです。
x = 1.5*10**(-2)
l = ("%.0e"%x).split("e")
x_str = r"$%s \times 10^{%s}$" % ( l[0], str(int(l[1])) )
ここでは、先行ゼロを回避するためにintに変換して戻しています:-02
->-2
など。