Solved

Round question

Posted on 2004-03-23
8
507 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
 
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
Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

 
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

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

If you have ever used Microsoft Word then you know that it has a good spell checker and it may have occurred to you that the ability to check spelling might be a nice piece of functionality to add to certain applications of yours. Well the code that…
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…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

706 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

19 Experts available now in Live!

Get 1:1 Help Now