如何将浮点数组格式化为字符串

时间:2012-08-10 08:32:40

标签: python format

我有一个非常简单的问题。我有一系列花车

   a = array([0.01,0.1,10,100,1000])

我想打印这个数组,以便最终结果看起来像

   10$^-2$, 10$^-1$, ....

使用%命令可以吗?

4 个答案:

答案 0 :(得分:4)

a = [0.01,0.1,10,100,1000]
for x in a:
     base,exp = "{0:.0e}".format(x).split('e')
     print "{0}0$^{1}$".format(base,exp)

<强>输出:

10$^-02$
10$^-01$
10$^+01$
10$^+02$
10$^+03$

答案 1 :(得分:2)

将数字转换为科学记数法字符串:

s = string.format("%.3e",0.001)

然后用乳胶格式替换e +或e-:

s.replace("e+","$^{")
s.replace("e-","$^{")

然后附上乳胶端括号:

s = s + "}$"

应输出:

"1.000$^{-3}$"

答案 2 :(得分:2)

作为一个单行:

["10$^{}$".format(int(math.log10(num))) for num in a]

或更清楚:

from math import *

def toLatex(powerOf10):
    exponent = int( log10(powerOf10) )
    return "10$^{}$".format(exponent)

nums = [10**-20, 0.01, 0.1, 1, 10, 100, 1000, 10**20]
[(x, toLatex(x)) for x in nums]

[(1e-20, '10$^-20$'),
 (0.01, '10$^-2$'),
 (0.1, '10$^-1$'),
 (1, '10$^0$'),
 (10, '10$^1$'),
 (100, '10$^2$'),
 (1000, '10$^3$'),
 (100000000000000000000L, '10$^20$')]

答案 3 :(得分:1)

试试这个:

for i in str(a):
    print i

输出:

0.01
0.1
10.0
100.0
1000.0

如果您更喜欢科学记数法:

for i in str(a):
    print '%.3e' % i

输出:

1.000e-02
1.000e-01
1.000e+01
1.000e+02
1.000e+03

'%。3e'中的数字控制小数点右边的位数。

编辑:如果要在同一行上打印所有内容,请在每个打印语句的末尾添加逗号','。