首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有python模块可以将值和错误转换为科学记数法?

是否有python模块可以将值和错误转换为科学记数法?
EN

Stack Overflow用户
提问于 2013-06-13 21:36:46
回答 2查看 398关注 0票数 1

假设我有两个数字,v = 0.01342err = 0.0004。在科学记数法下,这将被写为(13.4 ± 0.4)e-3。有没有一个函数可以进行这种转换(可能是在scipy上)?当然,重要的是数字,而不是±符号。在网上搜索,我了解到有(are?)函数(s?)它们吃一个要转换的数字和一些想要的数字,然后吐出结果。这不是我要找的。我写过一次,但结果很难看。

EN

回答 2

Stack Overflow用户

发布于 2013-06-13 22:24:22

我不明白最后几行是什么意思,但是当你有一个像你这样的特定输出时,你通常不得不写你自己的输出。

代码语言:javascript
复制
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)

这样就行了。

代码语言:javascript
复制
>>> v = .01342
>>> err = .0004
>>> sci_not(v,err)
(13.4 +/- 0.4)e3

编辑:如果将字符串设置为unicode,则可以添加±字符,但只有在使用print语句时,结果才看起来很漂亮。

将前面的返回语句替换为

代码语言:javascript
复制
return u'({0} \u00B1 {1})e{2}'.format(
            round(v*10**power,rnd),round(err*10**power,rnd),power)

这将返回

代码语言:javascript
复制
>>> sci_not(v,err)
u'(13.4 \xb1 0.4)e3'
>>> print sci_not(v,err)
(13.4 ± 0.4)e3
票数 2
EN

Stack Overflow用户

发布于 2013-06-13 22:12:23

我不知道这是否是您想要的,但是您可以使用.format以科学记数法显示数字

代码语言:javascript
复制
v = 0.01342
err = 0.0004

print ('({:.2e}'.format(float(v)) + ' +/- ' + '{:.2e}'.format(float(err)) + ')')

将输出以下内容:

代码语言:javascript
复制
(1.34e-02 +/- 4.00e-04)

{:.2e}的.2指定了精度,这可以防止任何过于丑陋的数字

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17088510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档