将否定的科学计数法1.3E-2转换为浮点数?

时间:2019-01-31 13:34:24

标签: python floating-point scientific-notation

我了解可以使用float将科学计数形式的数字转换为浮点数,如下所示:

>>> x = 1.3e8
>>> float(x)
130000000.0

然后,为什么我不能对负指数做同样的事情?

>>> x = 1.3e-8
>>> x
1.3e-08
>>> float(x)
1.3e-08

在最后一种情况下,我希望float(x)会给0.000000013

3 个答案:

答案 0 :(得分:1)

1.3e-8是浮点文字(即它直接创建一个float对象),因此您无需将其包装在float()中。 Python Shell仅返回float的默认字符串表示形式。要强制定点表示法,可以使用str.format(),尽管您可能需要指定精度:

>>> '{:.9f}'.format(1.3e-8)
'0.000000013'

答案 1 :(得分:0)

它已经是一个浮点数,只是以科学计数法表示

print(type(1.3e8)) # <class 'float'>
print(type(1.3e-8)) # <class 'float'>
print(0.000000013)  # 1.3e-08

答案 2 :(得分:0)

以下函数处理任意数量的浮点。

def displayfloat(x):
    # format numbers > 1.
    if str(x).find('+') > -1:
        return '{:.1f}'.format(x)
    e_idx = str(x).find('e')
    # format numbers > 1e-05
    if e_idx == -1:
        return str(x)
    # format numbers < 1e-05
    minus_idx = str(x).find('-')
    shift = e_idx
    if str(x).find('.') > -1:
        shift -= 1
    decimalpoints = -int(str(x)[str(x).find('-'):]) - 1 + shift
    floatformat = '{:.'+str(decimalpoints)+'f}'
    return floatformat.format(x)
# exmaples
displayfloat(1e-5) # --> '0.00001'
displayfloat(1.1e-5) # --> '0.000011'
displayfloat(1e+5) # --> '100000.0'