python中数字的格式化处理_在Python中一致地格式化数字

如果您确定小数点后面不需要超过固定数量的位数,那么:

>>> 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等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值