我做了一个倒计时的粗略版本,其分辨率为10秒。我试图将结果表示为0:59
。但是,在计数器处于450十分之一秒(或45秒)的时间内,我注意到下面的数学运算返回为1:45
。
我将intMinutesRemaining = intQuestionTimer / 600
的行改为\
,并修复了错误...但现在当时钟试图读取1:00
时,它会记下{ {1}}然后0:60
。该减法由一个间隔为100毫秒的定时器控制。
(0:59
等于60秒计时器说600,然后从那里倒计时intQuestionTimer
刻度,导致它被扣除1.)
Timer
我应该做些什么改变才能始终如一地显示正确的格式化文本?
答案 0 :(得分:1)
这听起来像一个四舍五入的问题。两个变量都定义为整数。但是,您正在使用/
浮点除法运算符,以便将运算结果向上舍入并存储在整数变量中。
使用整数除法运算符\
,或Math.Floor
。
答案 1 :(得分: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
operator /用于浮点运算,但当intQuestionTimer
值为599时,将其除以10会产生59,9。该值再次向上舍入到60。而不是使用\运算符进行整数运算,前一个除法产生59而没有小数部分,并且它正确显示。