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()或用点替换逗号.
该float是正确的,只是用format来显示它,只要你想,即:
print(format(the_float, '.8f'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30869 次 |
| 最近记录: |