我希望将一些小数字转换为简单易读的输出。这是我的方法,但我想知道是否有更简单的方法。
x = 8.54768039530728989343156856E-58
y = str(x)
print "{0}.e{1}".format(y.split(".")[0], y.split("e")[1])
8.e-58
我希望将一些小数字转换为简单易读的输出。这是我的方法,但我想知道是否有更简单的方法。
x = 8.54768039530728989343156856E-58
y = str(x)
print "{0}.e{1}".format(y.split(".")[0], y.split("e")[1])
8.e-58
这让您非常接近,您是否确实需要8.e-58
或者您只是想将其缩短为可读的内容?
>>> x = 8.54768039530728989343156856E-58
>>> print "{0:.1e}".format(x)
8.5e-58
替代:
>>> print "{0:.0e}".format(x)
9e-58
请注意,在 Python 2.7 或 3.1+ 上,您可以省略表示位置的第一个零,因此它类似于"{:.1e}".format(x)
像这样?
>>> x = 8.54768039530728989343156856E-58
>>> "{:.1e}".format(x)
'8.5e-58'
另一种方法是,如果您想在不进行字符串操作的情况下提取指数。
def frexp_10(decimal):
logdecimal = math.log10(decimal)
return 10 ** (logdecimal - int(logdecimal)), int(logdecimal)
>>> frexp_10(x)
(0.85476803953073244, -57)
格式如你所愿...
答案有两种:一种是使用数字,一种是简单显示。
对于实际数字:
>>> round(3.1415,2)
3.14
>>> round(1.2345678e-10, 12)
1.23e-10
内置的round()函数会将数字四舍五入到任意小数位。您可以使用它来截断读数中的无关紧要的数字。
对于显示器,您使用哪个版本的显示器很重要。在 Python 2.x 中,在 3.x 中已弃用,您可以使用“e”格式化程序。
>>> print "%6.2e" % 1.2345678e-10
1.23e-10
或在 3.x 中,使用:
>>> print("{:12.2e}".format(3.1415))
3.14e+00
>>> print("{:12.2e}".format(1.23456789e-10))
1.23e-10
或者,如果您喜欢零:
>>> print("{:18.14f}".format(1.23456789e-10))
0.00000000012346