round UP to next biggest .5 or 0, e.g. 20.3-->20.5 & 28.8-->30, am i bound to a case statement? i tried good few functions already

hi, i need help on a round function and all it needs to do is always ROUND UP to the next half.

functions i've tried:
   Private Function MyRound(ByVal aNumber As Single) As Single
        If aNumber < 0 Then
            Return CSng(Microsoft.VisualBasic.Fix((aNumber - 0.25) * 2) / 2)
        Else
            Return CSng(Microsoft.VisualBasic.Fix((aNumber + 0.25) * 2) / 2)
        End If
    End Function

    Public Function Round5(ByVal d As Double) As Double
        Return Math.Round(d * 2) / 2
    End Function

am i bound to making a case statement, cause id absolutely learn nothing from it.
thanks!
jxhardingAsked:
Who is Participating?
 
eekjConnect With a Mentor Commented:
Dim d As Double = 20.3
 MsgBox((Math.Round(Math.Round(d * 2), 0)) / 2.ToString)   'Displays 20.5

 Dim e As Double = 28.8
 MsgBox((Math.Round(Math.Round(e * 2), 0)) / 2.ToString)   'Displays 29
0
 
RonaldBiemansCommented:
Hi jxharding,

a question

24.4 -> 20
25.0 -> 30


0
 
jxhardingAuthor Commented:
hi ronaldbiemans

sorry , i made a error in the heading.
it only needs to update to the next half, "28.8-->30" should be 28.8-->29.0
thus if the first decimal place is bigger than 0 and smaller than 5, the first decimal place must then be .5
else
if the first decimal is bigger than 5, then the non decimal must +1 and, the decimal must be .0.
thanks!



0
 
zulu_11Connect With a Mentor Commented:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim dbnum As Double
        dbnum = dbnum.Parse(tbNum.Text)
        If Math.Round(dbnum) < dbnum Then
            dbnum = Math.Round(dbnum) + 0.5
        Else
            dbnum = Math.Round(dbnum)
        End If
        MsgBox(dbnum)
    End Sub

i tested the above function for the following

28.1 - 28.5 --> 28.5
28.6 - 28.9 --> 29

hope this helps

Zulu
0
 
zulu_11Commented:
oh! and the tbNum is a text field in which i take an input of the number to test...
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.