Solved

Round question

Posted on 2004-03-23
8
510 Views
Last Modified: 2010-05-01
In vb6 I am having a Rounding problem.

Round(1.5,0) = 2            Makes sense
Round(11.5,0) = 12        Makes sense
Round(112.5,0) = 112    Does not make sense.  Why not 113?

I have defined my memory varialbles as Double, but the rounding as shown above is not working correctly.

Thanks
0
Comment
Question by:EYoung
8 Comments
 
LVL 2

Expert Comment

by:cfry001
ID: 10660856
That is normal rounding behaviour. 1.49 will round down, 1.5 up
0
 
LVL 2

Expert Comment

by:cfry001
ID: 10660907
sorry ... to continue ....
on my machine same behaviour
 12
 2
 112

maybe it is a precision problem?
0
 
LVL 2

Expert Comment

by:cfry001
ID: 10660944
found a page
 
http://www.raritanval.edu/departments/cis/full-time/Schwarz/vb6/lesson7.htm

that says that VB6 rounds odd numbers up and even numbers down at .5
0
Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

 
LVL 17

Expert Comment

by:zzzzzooc
ID: 10660948
Round() rounds to the nearest even number. It's normal behavior and is called "Banker's rounding"/"Gaussian rounding" aside from "Standard rounding".
0
 
LVL 9

Expert Comment

by:p_sie
ID: 10660999
cfry001 has not read the question!!

Eyoung, check this website, in it is explained by microsoft

http://support.microsoft.com/default.aspx?scid=kb;EN-US;196652

0
 
LVL 4

Expert Comment

by:learning_t0_pr0gram
ID: 10661165
Private Sub Command1_Click()
Dim MyNumber As Double
Dim Tmp As Double
MyNumber = Text1.Text
If Not InStr(1, MyNumber, ".") Then MyNumber = MyNumber + ".1"
If Mid(MyNumber, 1, InStr(1, MyNumber, ".") - 1) Mod 2 = 0 Then
If Mid(MyNumber, InStr(1, MyNumber, ".") + 1) <> 5 Then
MyNumber = MyNumber + 0.1
End If
End If
MsgBox Round(MyNumber, 0)
End Sub

that will fix the problem, if u don't mind a little code
0
 
LVL 19

Accepted Solution

by:
Shauli earned 25 total points
ID: 10662116
FormatNumber(1.5, 0) = 2
FormatNumber(11.5, 0) = 12
FormatNumber(112.5, 0) = 113

S
0
 
LVL 7

Author Comment

by:EYoung
ID: 10662752
Thanks to everyone.  cfry001 - you were right.  VB6 does have an error that was not present in vb5.  Also, MS is not consistent among its apps in how it calcs rounding.  I read that same url.

Shauli - you provided the answer that was the most helpful, thanks.
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

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

When designing a form there are several BorderStyles to choose from, all of which can be classified as either 'Fixed' or 'Sizable' and I'd guess that 'Fixed Single' or one of the other fixed types is the most popular choice. I assume it's the most p…
Enums (shorthand for ‘enumerations’) are not often used by programmers but they can be quite valuable when they are.  What are they? An Enum is just a type of variable like a string or an Integer, but in this case one that you create that contains…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…

813 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

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now