将指数转换为浮点数

Ste*_*anS 4 python floating-point exponent

这是我的代码,试图将该行的第二个字段从指数转换为float.

outputrrd = processrrd.communicate()
(output, error) = outputrrd
output_lines = output.split('\n')
for line in output_lines:
    m = re.search(r"(.*): ", line)
    if m != None:
        felder = line.split(': ')
        epoch =  felder[0].strip(':')
        utc = epoch2normal(epoch).strip("\n")
        #print felder[1]
        data = float(felder[1])
        float_data = data * 10000000
        print float_data
        resultslist.append( utc + ' ' + hostname + ' ' +  float_data)
Run Code Online (Sandbox Code Playgroud)

但是,程序因此错误而停止:

File "/opt/omd/scripts/python/livestatus/rrdfetch-convert.py", line 156, in <module>
    data = float(felder[1])
ValueError: invalid literal for float(): 6,0865000000e-01
Run Code Online (Sandbox Code Playgroud)

有谁知道原因?

ede*_*der 14

简单的方法是更换!一个简单的例子:

value=str('6,0865000000e-01')
value2=value.replace(',', '.')
float(value2)
0.60865000000000002
Run Code Online (Sandbox Code Playgroud)


NPE*_*NPE 11

原因是使用逗号6,0865000000e-01.这不起作用,因为float()不能识别区域设置.有关详细信息,请参见PEP 331.

尝试locale.atof()或用点替换逗号.


Ped*_*ito 5

float正确的,只是用format来显示它,只要你想,即:

print(format(the_float, '.8f'))
Run Code Online (Sandbox Code Playgroud)