/ / Como converter um float em um formato de hora - minutos, segundos e microssegundos - em Python? - python

Como converter um flutuante em um formato de hora - minutos, segundos e microssegundos - em Python? - python

Eu estou trabalhando com resultados de natação (de umxls source) em Python e preciso converter um float em um formato de hora - minutos, segundos e microssegundos - para executar operações de adição e subtração. Estou usando esta função:

from datetime import timedelta
def format_result(result):
seconds = int(result)
microseconds = int((result * 1000000) % 1000000)
output = timedelta(0, seconds, microseconds)
return output

Quando a entrada especificada é 131,39, a saída deve ser 0: 02: 11.390000, mas na verdade é 0: 02: 11.389999. Como posso converter isso corretamente sem este erro de precisão?

Respostas:

0 para resposta № 1

Eu tentei sem convertê-lo em int, funciona bem, como sua expactação dá 390000 .... !!

from datetime import timedelta
def format_result(result):
seconds = int(result)
microseconds = (result * 1000000) % 1000000
output = timedelta(0, seconds, microseconds)
return output

print format_result(131.39)

2 para resposta № 2

Tudo que você precisa fazer é convertê-lo em hora UTC e format data hora

>>> import datetime
>>> datetime.datetime.strftime(datetime.datetime.utcfromtimestamp(131.39), "%M:%S:%f")
"02:11:390000"

O que você precisa fazer,

import datetime
def format_result(result):
date = datetime.datetime.utcfromtimestamp(result)
output = datetime.datetime.strftime(date, "%M:%S:%f")
return output
print format_result(131.39)

Espero que isso ajude.