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

--

Ronald W. Roberts

Roberts Communication

rw*@robcom.com