我有一个变量
sr = 2*grav*mass/c**2
它等同于1.41069562657e-25
(并打印出来)。如何以“普通”格式打印(1.41*10^-25)
?
答案 0 :(得分:7)
你可以这样做:
>>> sr = 1.41069562657e-25
>>> print("{:.3g}".format(sr).replace("e", "*10^"))
1.41*10^-25
但是,计算机浮点输出中的e
符号被广泛理解和接受。
答案 1 :(得分:1)
您还可以先将尾数和指数分开:
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
Greg的回答并不总是用科学记数法打印(例如1.23),但它肯定更简单。