是的,另外一个,但是,我已经尝试了大量可用的示例和解决方案,似乎无法解决我的问题。
我需要衡量API调用的性能,并决定使用以下内容:
for x in range(0, 5):
try:
nf=urllib.urlopen(_url)
_start=time.time()
page=nf.read()
_end=time.time()
nf.close()
_delta=(_end - _start)
_processingTimelist.append(_delta)
time.sleep(1)
except:
_processingTimelist.append(9999)
结果:
[5.2928924560546875e-05, 4.9114227294921875e-05, 4.887580871582031e-05, 7.510185241699219e-05, 5.1975250244140625e-05]
5.55992126465e-05
到目前为止这么好,看起来就像我追求的那样。但是现在我想将它提交给一个监控服务,并希望将其舍入到2位数,因为它们已经代表一个超小的单位(毫秒)并且发送这么多数字是非常荒谬的。
我已尝试了大量这些舍入方法,但我得到了超级奇怪的结果,如:
_processingTime = round(_processingTime, 3)
print _processingTime
result:
0.0
OR:
_processingTime = float("{0:.4f}".format(_processingTime))
print _processingTime
result:
0.0001
为什么会这样,以及如何解决?
我并不太关心精度,但我希望例如5.55992126465e-05变为5.56,甚至5.55也是可以接受的,因为实时单位的差异可以忽略不计。
答案 0 :(得分:4)
您可以使用科学记数法格式化您的号码:
>>> '{:.2e}'.format(5.2928924560546875e-05)
'5.29e-05'
您也可以将其转换回浮动:
>>> float('{:.2e}'.format(5.2928924560546875e-05))
5.29e-05
或者你的所有数字:
>>> numbers = [5.2928924560546875e-05, 4.9114227294921875e-05, 4.887580871582031e-05,
7.510185241699219e-05, 5.1975250244140625e-05]
>>> [float('{:.2e}'.format(x)) for x in numbers]
[5.29e-05, 4.91e-05, 4.89e-05, 7.51e-05, 5.2e-05]