Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
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
Medium Priority
?
336 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
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 1000 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 1000 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

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

This article explains how to create and use a custom WaterMark textbox class.  The custom WaterMark textbox class allows you to set the WaterMark Background Color and WaterMark text at design time.   IMAGE OF WATERMARKS STEPS Create VB …
Article by: Kraeven
Introduction Remote Share is a simple remote sharing tool, enabling you to see, add and remove remote or local shares. The application is written in VB.NET targeting the .NET framework 2.0. The source code and the compiled programs have been in…
This lesson discusses how to use a Mainform + Subforms in Microsoft Access to find and enter data for payments on orders. The sample data comes from a custom shop that builds and sells movable storage structures that are delivered to your property. …
Kernel Data Recovery is a renowned Data Recovery solution provider which offers wide range of softwares for both enterprise and home users with its cost-effective solutions. Let's have a quick overview of the journey and data recovery tools range he…

580 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