打印1.41069562657e-25为1.41 * 10 ^ -25

时间:2012-03-11 01:34:02

标签: python math

我有一个变量

sr = 2*grav*mass/c**2

它等同于1.41069562657e-25(并打印出来)。如何以“普通”格式打印(1.41*10^-25)

2 个答案:

答案 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),但它肯定更简单。