Не все числа могут быть точно сохранены с помощью переменных с плавающей запятой.Точно так же, как 1/3 нельзя представить с помощью конечных цифр в базе 10, 1/10 нельзя представить с помощью конечных цифр в базе 2. То, что вы в итоге получите, округляется до 0,10000000000000001 или близко.Поэтому, когда вы вычитаете 0,1 из этого, вы не совсем получаете 0.
Самое надежное решение для этого - хранить ваше время в виде миллисекунд в целом числе и делить его, когда вы хотите обновить метку.Не беспокойтесь о том, чтобы переходить от метки к номеру.Каноническое хранение номера должно быть как число.Ярлык предназначен только для его отображения.
Редактировать:
Для всех, кто рекомендует просто заменить его на <=
- это всего лишь хак, который едва ли,Представление с плавающей точкой 0,1 часто 0,10000000000000001.Что происходит, когда вы вычитаете 0,1 из этого?Это все еще выше 0. Условное срабатывает только тогда, когда оно достигает почти -0.1, что не ожидается поведение от приложения.Это плохое решение.