Вы также можете сначала разделить мантиссу и экспоненту:
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), но он, безусловно, проще.