2014-12-04 2 views
-2

а = 08,94Преобразовать поплавок в время (hour.minute) в питоне

здесь 08 является час и 0,94 является минуты, я хочу, чтобы вычислить 08.94 до 09.34

Пожалуйста, дайте мне идею,

заранее спасибо ...

+1

.94, скорее всего, ** доля минуту **, а не 94 секунд , –

+0

Да, вы правильно! – Jothimani

+0

Используйте свои математические навыки. Но для меня это кажется бессмыслицей. – jgritty

ответ

4

два случая:.

a = "08.94" 
asplit = a.split('.') 

Если фракция считается минуту:

print str(int(asplit[1])/60+int(asplit[0])) + '.' + str(int(asplit[1]) % 60) 

Если доля рассматривается как процент минут:

print asplit[0] + '.' + str(int(float(asplit[1]) * 60)) 

Выход:

9.34 
08.5640 
0

Там есть две возможности:

  1. Вы misun выдержать данные.

    Возможно, у вас есть что-то вроде hh.mm, но на самом деле доли секунды.

    Так что вы должны сделать hours = int(a); minutes = (a-hours) * 60

  2. Тот, кто положил, что в поплавок не понял что-то.

    Тогда вы можете просто сделать

    Таким образом, вы должны сделать hours = int(a); minutes = (a-hours) * 100, которые будут essentialy поставить первые два десятичных разряда в minutes, возможно, добавление некоторых знаков после запятой, а также.

    Если вы обнаружили, что это >= 60, вы добавляете его в hours и вычитаете 60 из minutes.

(В предыдущей версии этого ответа я использовал функцию floor(). Это могут быть импортированы из math модуля и Retuns то же значение, но как поплавок. Но лучше использовать int, чтобы не необходимо импортировать и действительно получить целые значения для часов, которые могли бы быть чище в большинстве случаев)

+0

Почему 'floor()', а не 'int()'? Часы лучше всего выражаются целыми числами, а не плавают (даже если они имеют десятичную часть). –

+1

@MartijnPieters 'floor()' был forst, который пришел мне на ум; 'int()' должен работать. – glglgl

+0

Привет, вы можете объяснить «пол»? – Jothimani

Смежные вопросы