Это не совсем с 1 > 1, но близко:
Я хочу сравнить две метки времени и сделать что-то, что if time > timestamp
оценивается как True
. Обе переменные имеют одинаковые float
, как видно из pdb.
(Pdb) print time
1396836917.98
(Pdb) print last_timestamp
1396836917.98
(Pdb) if time > last_timestamp: print 'wtf'
wtf
Я ожидаю, что это будет оцениваться как False
, похоже, это проблема float
:
(Pdb) if float(time) > float(last_timestamp): print 'wtf'
wtf
int
сравнение работает нормально
(Pdb) if int(time) > int(last_timestamp): print 'wtf'
Поэтому я ожидал проблемы с точностью доступных битов, представляющих число
(Pdb) if float(time)*100 > float(last_timestamp)*100: print 'wtf'
wtf
но он по-прежнему оценивается как True
, если не осталось десятичных знаков..
Работа для меня прямо сейчас
if int(time*100) > int(last_timestamp*100): print 'wtf'
но мне бы очень хотелось понять, что происходит и как правильно использовать оператор >
с float
..