我有一个可变打印1.41069562657e-25作为1.41 * 10^-25
sr = 2*grav*mass/c**2
它相当于1.41069562657e-25
(和打印为这样)。如何以“正常”形式打印它,(1.41*10^-25)
?
我有一个可变打印1.41069562657e-25作为1.41 * 10^-25
sr = 2*grav*mass/c**2
它相当于1.41069562657e-25
(和打印为这样)。如何以“正常”形式打印它,(1.41*10^-25)
?
你可以这样做:
>>> sr = 1.41069562657e-25
>>> print("{:.3g}".format(sr).replace("e", "*10^"))
1.41*10^-25
然而,e
符号在计算机浮点输出被广泛理解和接受。
我知道e符号是好的,我只是认为python可能有一个更标准的方法来做到这一点。 虽然这当然完美。 谢谢 – MikeVaughan 2012-03-11 01:46:24
@MikeVaughan:请注意,这不会使用像1.23这样的数字的指数表示法。 – EOL 2012-03-11 02:01:19
@EOL:请注意,我在要打印的表达式周围放置了括号,以便此答案也适用于Python 3.x.我已经为你修好了。 – 2012-03-11 02:06:34
您也可以先单独尾数和指数:
import math
def mant_exp(num):
'''
Returns the mantissa and (base 10) exponent of num.
num -- float or int.
'''
try:
exponent = math.floor(math.log10(abs(num)))
except ValueError: # Case of log10(0)
return (0, 0) # Convention: 0 = 0*10^0
mantissa = num/10**exponent
return (mantissa, int(exponent))
,然后使用Python的灵活的格式:
>>> sr = 1.41069562657e-25
>>> print '{:.2f}*10^{}'.format(*mant_exp(sr))
1.41*10^-25
,并得到完全控制你打印的内容。例如,您可以添加在指数前一个可选的“+”号,等
这总是给你一个科学记数法的结果,即使对于像1.23号(这可能是你想要的):
>>> print '{:.2f}*10^{}'.format(*mant_exp(1.23))
1.23*10^0
格雷格的答案并不总是以科学记数法打印(例如1.23),但它肯定比较简单。
[这是公认的来自计算机或计算器的科学记号。](http://en.wikipedia.org/wiki/Scientific_Notation#E_notation)。没有什么不正常的。 – Makoto 2012-03-11 01:40:45