首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何避免在python中打印科学记数法而不添加额外的数字?

如何避免在python中打印科学记数法而不添加额外的数字?
EN

Stack Overflow用户
提问于 2011-06-21 03:37:17
回答 2查看 7.6K关注 0票数 5

This question询问如何抑制python中的科学记数法。

我有一系列的数字要显示-- 10的小幂--我想显示它们没有尾随的零。即,0.1,0.01,依此类推到0.000001

如果我做"%s" % 10 ** -6,我会得到'1e-06'。如果我使用"%f" % 10 ** -6,我会得到'0.000001',这正是我想要的。

然而,"%f" % 10 ** -3产生的'0.001000'违反了“没有尾随零”的约束。

暴力破解这个问题并不难(正则表达式替换之类的),但是我想知道我是否遗漏了一些格式字符串的魔力。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-21 03:51:29

在我看来这有点老生常谈,但你可以使用str.rstrip("0")去掉尾随的零:

代码语言:javascript
运行
复制
>>> "{:f}".format(10**-6).rstrip("0")
'0.000001'
>>> "{:f}".format(10**-3).rstrip("0")
'0.001'

编辑:正如评论中所说,有一个更好的方法可以做到这一点:

代码语言:javascript
运行
复制
>>> format(1e-6, 'f').rstrip('0')
'0.000001'
>>> format(1e-3, 'f').rstrip('0')
'0.001'
票数 7
EN

Stack Overflow用户

发布于 2014-03-21 06:05:11

简单的rstrip("0")不能很好地处理小的和特定的其他值,它应该在小数点后留下一个零- 0.0而不是0.

代码语言:javascript
运行
复制
def format_float(value, precision=-1):
    if precision < 0:
        f = "%f" % value
    else:
        f = "%.*f" % (precision, value)

    p = f.partition(".")

    s = "".join((p[0], p[1], p[2][0], p[2][1:].rstrip("0")))

    return s

print(format_float(3e-10))
print(format_float(3e-10, 20))
print(format_float(1.5e-6))
print(format_float(1.5e+6))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6416474

复制
相关文章

相似问题

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