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'违反了“没有尾随零”的约束。
暴力破解这个问题并不难(正则表达式替换之类的),但是我想知道我是否遗漏了一些格式字符串的魔力。
发布于 2011-06-21 03:51:29
在我看来这有点老生常谈,但你可以使用str.rstrip("0")去掉尾随的零:
>>> "{:f}".format(10**-6).rstrip("0")
'0.000001'
>>> "{:f}".format(10**-3).rstrip("0")
'0.001'编辑:正如评论中所说,有一个更好的方法可以做到这一点:
>>> format(1e-6, 'f').rstrip('0')
'0.000001'
>>> format(1e-3, 'f').rstrip('0')
'0.001'发布于 2014-03-21 06:05:11
简单的rstrip("0")不能很好地处理小的和特定的其他值,它应该在小数点后留下一个零- 0.0而不是0.
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))https://stackoverflow.com/questions/6416474
复制相似问题