创建倒数计时器期间的数学错误

时间:2015-08-24 19:01:24

标签: vb.net timer

我做了一个倒计时的粗略版本,其分辨率为10秒。我试图将结果表示为0:59。但是,在计数器处于450十分之一秒(或45秒)的时间内,我注意到下面的数学运算返回为1:45

我将intMinutesRemaining = intQuestionTimer / 600的行改为\,并修复了错误...但现在当时钟试图读取1:00时,它会记下{ {1}}然后0:60。该减法由一个间隔为100毫秒的定时器控制。

0:59等于60秒计时器说600,然后从那里倒计时intQuestionTimer刻度,导致它被扣除1.)

Timer

我应该做些什么改变才能始终如一地显示正确的格式化文本?

2 个答案:

答案 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而没有小数部分,并且它正确显示。