La conversion d'un flotteur pour le format hh:mm
Je veux imprimer une valeur flottante que j'ai obtenu après l'exécution des mathématiques comme du temps de chaîne de caractères dans le format hh:mm. Actuellement, j'ai le flotteur comme 9.888888888888886 et je le veux comme à l'époque 09:50. J'ai essayé le code suivant:
time = str(time)
time = time.split(".")
time[1] = float(time[1])
time[1] *= 0.6
time[1] = str(time[1])
et quand j'ai l'impression-je utiliser
str(time[0]) + ":" + time[1][:2]
Toute façon, pour obtenir cet effet de manière cohérente? Avec plus avancées intrants mon code ci-dessus ne fonctionne pas correctement, et les sorties du mauvais temps.
- Définir "ne fonctionne pas correctement". Définir le "mauvais temps".
Vous devez vous connecter pour publier un commentaire.
Subsidiairement, à l'aide de
datetime
, vous pouvez simplement utiliser une mise en forme simple avec un peu de maths, par exemple:À l'aide de
datetime.timedelta
:À l'aide de divmod vous obtenez le reste et le quotient d'une division.
De sortie:
Si vous voulez que les secondes trop:
En supposant que vous souhaitez activer
9.888888888888886
en09:53
, basé sur le premier étant à virgule flottante heures, et vous ne voulez pas à vous soucier de jours, sans bibliothèque, il vous suffit de faire:Uniquement avec le module math, essayez
Vous pourriez penser que l'utilisation de la
datetime
module pourrait l'aider, mais en fait c'est un peu délicate. Vous pouvez obtenir un timedelta objet par passage dans votre fractions d'heures:Mais arriver que dans un objet ou un objet datetime au format est le problème, vous finissez par avoir à faire quelque chose comme
(Qui utilise un choisi au hasard afin d'obtenir les temps de delta dans un datetime pour l'utilisation)
Pour python version 3.7 cela devient un one-liner.
(Ici le temps-chaîne moins les trois derniers caractères sont imprimés.)
Sinon, si vous avez des besoins secondes:
print (datetime.timedelta(hours=x))
Et enfin, si vous allez au-delà de l'24 heures marque timedelta montre l'ajout de jour comme de bien:
x = 39.888888888888886