Re: Problem With Round Function

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Ronald W. Roberts wrote:

I'm having a problem understanding the Round function. Below are quotes from two
books on VB.NET. The first book shows examples with one argument and how it
rounds. The second book something different.


Programming Microsoft Windows with Microsoft Visual Basic.NET
"The Round method with a single argument return the whole number nearest
to the argument. If the argument to Round is midway between two whole numbers,
the return value is the nearest even number."


An Introduction to Programming Using Microsoft Visual Basil.NET
Rules of Rounding
"A number with a decimal potion greater than or equal to .05 is rounded up and a
number with a decimal portion less than .5 is rounded down. When the decimal
portion is exactly 0.5, an odd number is rounded up and an even number remains
the same."


1 Argument
dblAnswer = Math.Round(dblNum)
Num    Answer
9.5    10
8.5    8
7.5    8
6.5    6
5.5    6
4.5    4
3.5    4
2.5    2
1.5    2
0.5    0

In the above examples both books "rounds to the nearest even number"
and  "an odd number is rounded up and an even number remains the same.",
I understand.

2 Arguments
dblAnswer = Math.Round(dblNum, intDecPt)

Num    DecPt    Answer
9.5    1    9.5
8.5    1    8.5
7.5    1    7.5
6.5    1    6.5
5.5    1    5.5
4.5    1    4.5
3.5    1    3.5
2.5    1    2.5
1.5    1    1.5
0.5    1    0.5

Num    DecPt    Answer
9.55    1    9.6
8.55    1    8.6
7.55    1    7.6
6.55    1    6.6
5.55    1    5.6
4.55    1    4.6
3.55    1    3.5
2.55    1    2.5
1.55    1    1.5
0.55    1    0.6

The first example using 2 arguments I understand.
But in the second example using 2 arguments, I don't understand why 1.55, 2.55, and 3.55
didn't round to .6


This is the code I used.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dblNum As Single
Dim dblAnswer As Single
Dim IntDecPt As Integer
Dim strString As String
Dim x As Integer


       strString = Me.TextBox1.Text
       x = strString.IndexOf(",")
       If x = -1 Then
           dblNum = Val(strString)
           dblAnswer = Math.Round(dblNum)
       Else
           dblNum = Val(strString.Substring(0, x))
           IntDecPt = Val(strString.Substring(x + 1, 1))
           dblAnswer = Math.Round(dblNum, IntDecPt)
       End If
       Me.Label1.Text = dblAnswer
   End Sub


Ron

Thanks to all who replied.
I felt like I was standing in the woods and couldnt't see the trees.
All of the replies really help to clear it up.

Thanks again,
Ron

--
Ronald W. Roberts
Roberts Communication
rwr@xxxxxxxxxx

.



Relevant Pages

  • Problem With Round Function
    ... I'm having a problem understanding the Round function. ... The first book shows examples with one argument and how it ... Dim dblAnswer As Single ...
    (microsoft.public.dotnet.languages.vb)
  • RE: deleting round function
    ... Personally, if it wasn't hurting anything, I'd probably leave the Round ... Dim lngStart As Long ... Dim lngCount As Long ... Dim strSubString As String ...
    (microsoft.public.excel.worksheet.functions)
  • Re: Absolute Beginner and Timer Class
    ... You cant easily call a timer sub from vb.net as you have to pass the objects ... 'Dim RoundLength As Integer = Form1.RoundLength ... on the various round levels for a Poker Tournament ie ...
    (microsoft.public.dotnet.languages.vb)
  • Re: Support for optional parameters
    ... > round. ... Microsoft have put in huge ... > needs tight integration with the .Net Framework, ... Rudder told me that there really wasn't any intention of making Office ...
    (microsoft.public.dotnet.framework)
  • Re: StreamReader omits 0x93 and 0x94 when reading text file
    ... I've spent the last week going round ... Drew Berkemeyer ... I had created a StreamReader like this: ... > Dim sr As StreamReader = New StreamReader ...
    (microsoft.public.dotnet.languages.vb)