Я сделал грубую версию обратного отсчета, которая имеет разрешение 10 секунд секунды. Я пытаюсь выразить результат как 0:59
. Тем не менее, за время, когда счетчик составляет 450 десятых секунды (или 45 секунд), я заметил, что приведенная ниже математика возвращается как 1:45
.Ошибка математики при создании таймера обратного отсчета
я перешел линию intMinutesRemaining = intQuestionTimer/600
иметь \
, с исправлениями ошибок ... но теперь, когда часы пытается прочитать 1:00
, он будет тикать до 0:60
затем 0:59
. Это вычитание контролируется таймером, который имеет интервал в 100 миллисекунд.
(intQuestionTimer
будет равна сказать 600 для второго таймера 60, а затем обратный отсчет от туда с Timer
клеща, заставляя его быть вычтены 1.)
Private Sub UpdateQuestionTimer()
'lblQuestionTimer.Text = intQuestionTimer.ToString
Dim strFormat As String
Dim intMinutesRemaining As Integer
Dim intSecondsRemaining As Integer
intMinutesRemaining = intQuestionTimer/600
intSecondsRemaining = intQuestionTimer Mod 600
strFormat = "{0:0}:{1:00}"
lblQuestionTimer.Text = String.Format(strFormat, intMinutesRemaining, intSecondsRemaining/10)
End Sub
Какие изменения я должен сделать, чтобы это последовательно отображать правильный форматированный текст?
Какой смысл в 10-й секунде, если вы показываете только секунды? – Amit
@Amit: для обеспечения точной остановки/запуска. Подумайте об этом таким образом, если я остановлю таймер с оставшейся 9 секунд на точке, затем запустите его снова, таймер будет находиться в 8 секунд, не имея полной секунды. Другая причина: подумайте о том, почему НБА и другая спортивная организация теперь показывают 10 секунд секунды, когда на игровых часах осталось менее 1 минуты. –
Если intQuestionTimer составляет десятые доли секунды, тогда 'intSecondsRemaining = intQuestionTimer Mod 600' - это число десятых долей секунды в текущую минуту. Вам нужно разделить на 10, чтобы получить секунды. – Blackwood