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 № 1Eu 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.