假设我有两个数字,v = 0.01342
并且err = 0.0004
。在科学记数法下,这将被写为(13.4 ± 0.4)e-3
。是否有进行该转换的功能(可能在 scipy 上)?当然,重要的是数字而不是±
符号。在网上搜索,我了解到有(是?)函数(s?)它吃一个数字来转换和一些所需的数字,然后他们吐出结果。这不是我要寻找的。我写过一次,但结果很丑。
问问题
420 次
2 回答
2
我不明白你最后几行的意思,但是当你有一个像你这样的特定输出时,你通常必须自己写。
def sci_not(v,err,rnd=1):
power = - int(('%E' % v)[-3:])+1
return '({0} +/- {1})e{2}'.format(
round(v*10**power,rnd),round(err*10**power,rnd),power)
这是诀窍
>>> v = .01342
>>> err = .0004
>>> sci_not(v,err)
(13.4 +/- 0.4)e3
编辑:如果您将字符串设为 unicode,则可以输入 ± 字符,但仅当您使用打印语句时,结果才会看起来很漂亮。
将之前的 return 语句替换为
return u'({0} \u00B1 {1})e{2}'.format(
round(v*10**power,rnd),round(err*10**power,rnd),power)
这返回
>>> sci_not(v,err)
u'(13.4 \xb1 0.4)e3'
>>> print sci_not(v,err)
(13.4 ± 0.4)e3
于 2013-06-13T14:24:22.480 回答
1
I don't know if this is exactly what you're looking for, but you can display numbers in scientific notation using .format
v = 0.01342
err = 0.0004
print ('({:.2e}'.format(float(v)) + ' +/- ' + '{:.2e}'.format(float(err)) + ')')
Will output the following:
(1.34e-02 +/- 4.00e-04)
the .2 of {:.2e} specifies the precision, which prevents any overly ugly numbers
于 2013-06-13T14:12:23.193 回答