如何更改显示的数字格式/数量?

时间:2011-12-01 14:25:56

标签: python digit

我是Python的新手并且有一个问题。目前我正在使用它来计算消息消失和消息进入之间的时间。然后,生成的开始时间,时间增量和唯一ID将显示在文件中。同样,我正在使用Python 2.7.2

目前它正在减去两次,结果是0.002677777777(0.00是小时和分钟),我不需要。如何格式化它以秒为单位(59.178533,00),秒为59秒。同样,有时python会将数字显示为8.9999999 x e-05。如何强制它始终显示确切的数字。

def time_deltas(infile): 
   entries = (line.split() for line in open(INFILE, "r")) 
   ts = {}  
   for e in entries: 
      if " ".join(e[2:5]) == "OuchMsg out: [O]": 
         ts[e[8]] = e[0]    
      elif " ".join(e[2:5]) == "OuchMsg in: [A]":    
         in_ts, ref_id = e[0], e[7] 
         out_ts = ts.pop(ref_id, None)    
         yield (float(out_ts),ref_id[1:-1], float(in_ts) - float(out_ts))

INFILE = 'C:/Users/klee/Documents/Ouch20111130_cartprop04.txt'
import csv

with open('output_file.csv', 'w') as f: 
   csv.writer(f).writerows(time_deltas(INFILE))

以下是一小部分数据:

61336.206267 - OuchMsg out: [O] enter order. RefID [F25Q282588] OrdID [X1F3500687  ]

2 个答案:

答案 0 :(得分:2)

如果float(out_ts)是小时数,那么'{0:.3f}'.format(float(out_ts) * 3600.)将为您提供小数点后三位数的秒数文本表示。

答案 1 :(得分:1)

  

如何强制它始终显示确切的数字。

由于浮点不准确,有时这是不可能的

另一方面, 可以做的是根据需要设置浮动格式。有关说明,请参阅here

E.G:将您的yield行替换为:

yield ("%.5f"%float(out_ts),"%.5f"%ref_id[1:-1], "%.5f"%(float(in_ts) - float(out_ts)))

将逗号后的所有值截断为5位数。对于许多不同的格式,还有其他格式化选项。