Solved

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

Posted on 2004-10-07
5
323 Views
Last Modified: 2008-02-01
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!
0
Comment
Question by:jxharding
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
5 Comments
 
LVL 25

Expert Comment

by:RonaldBiemans
ID: 12246533
Hi jxharding,

a question

24.4 -> 20
25.0 -> 30


0
 

Author Comment

by:jxharding
ID: 12246593
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
 
LVL 3

Accepted Solution

by:
eekj earned 250 total points
ID: 12246602
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
 
LVL 6

Assisted Solution

by:zulu_11
zulu_11 earned 250 total points
ID: 12246700
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
 
LVL 6

Expert Comment

by:zulu_11
ID: 12246708
oh! and the tbNum is a text field in which i take an input of the number to test...
0

Featured Post

Enroll in June's Course of the Month

June's Course of the Month is now available! Every 10 seconds, a consumer gets hit with ransomware. Refresh your knowledge of ransomware best practices by enrolling in this month's complimentary course for Premium Members, Team Accounts, and Qualified Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: jpaulino
XML Literals are a great way to handle XML files and the community doesn’t use it as much as it should.  An XML Literal is like a String (http://msdn.microsoft.com/en-us/library/system.string.aspx) Literal, only instead of starting and ending with w…
If you're writing a .NET application to connect to an Access .mdb database and use pre-existing queries that require parameters, you've come to the right place! Let's say the pre-existing query(qryCust) in Access takes a Date as a parameter and l…
This video Micro Tutorial shows how to password-protect PDF files with free software. Many software products can do this, such as Adobe Acrobat (but not Adobe Reader), Nuance PaperPort, and Nuance Power PDF, but they are not free products. This vide…
There are cases when e.g. an IT administrator wants to have full access and view into selected mailboxes on Exchange server, directly from his own email account in Outlook or Outlook Web Access. This proves useful when for example administrator want…

724 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question