Solved

Rounding

Posted on 2002-07-19
7
253 Views
Last Modified: 2010-05-02
i need to be able to round down and round up (a number of course). any know how?
0
Comment
Question by:CyberAccess
7 Comments
 
LVL 43

Expert Comment

by:TimCottee
ID: 7164670
Use the Round() function!

Debug.Print Round(3.3)
Debug.Print Round(3.6)
Debug.Print Round(3.678,2)
0
 
LVL 4

Expert Comment

by:gencross
ID: 7164671
Sounds too easy :)
0
 
LVL 44

Expert Comment

by:Arthur_Wood
ID: 7164685
be aware the the Round function uses "Banker's Rounding":

If a Value is EXACTLY .5, then if the rounding will be to the EVEN whole Number - 2.5 will ROUND Down to 2, 3.5 will ROUND Up to 4.

Arthur Wood
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 70

Expert Comment

by:Éric Moreau
ID: 7164686
One thing for sure, do not use the Format function to round numbers. To know more on this subject, have a look at http://www.experts-exchange.com/jsp/qManageQuestion.jsp?ta=visualbasic&qid=20311047
0
 
LVL 7

Expert Comment

by:Joe_Griffith
ID: 7164813
Be aware that the VB Round function, while more accurate, is not acceptable by the IRS and many businesses will complain about it.  Here's the function I use... it's crude but effective:

Public Function fc_spRound(ac_Amount As Currency, al_Places As ppRound) As Currency
  If ac_Amount < 0 Then
    Select Case al_Places
   
    Case ppOneCent
      fc_spRound = Fix((ac_Amount - 0.005) * 100) / 100
   
    Case ppFiveCents
      fc_spRound = Fix((ac_Amount - 0.025) * 20) / 20
     
    Case ppDollar
      fc_spRound = Fix(ac_Amount - 0.5)
     
    Case ppTruncateToCents
      fc_spRound = Fix(ac_Amount * 100) / 100
   
    Case ppTruncateToDollars
      fc_spRound = Fix(ac_Amount)
     
    End Select
 
  Else
    Select Case al_Places
   
    Case ppOneCent
      fc_spRound = Fix((ac_Amount + 0.005) * 100) / 100
   
    Case ppFiveCents
      fc_spRound = Fix((ac_Amount + 0.025) * 20) / 20
     
    Case ppDollar
      fc_spRound = Fix(ac_Amount + 0.5)
     
    Case ppTruncateToCents
      fc_spRound = Fix(ac_Amount * 100) / 100
   
    Case ppTruncateToDollars
      fc_spRound = Fix(ac_Amount)
     
    End Select
  End If
End Function
0
 
LVL 7

Expert Comment

by:Joe_Griffith
ID: 7164826
Here is a link to more than you ever wanted to know about rounding in VB:

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q196652&SD=MSKB&
0
 
LVL 2

Accepted Solution

by:
mbenassor earned 20 total points
ID: 7169279
I also crossed this problem, you can use my function :

x : is the number you want to apply round
n : number of digits to keep

Private Function NewRound(x As Double, n As Integer) As Double
   Dim factor As Double, y As Double
   
   factor = 10 ^ n
   y = x * factor + Sgn(x) * 0.5
   NewRound = Fix(y) / factor
End Function
0

Featured Post

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

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

Suggested Solutions

There are many ways to remove duplicate entries in an SQL or Access database. Most make you temporarily insert an ID field, make a temp table and copy data back and forth, and/or are slow. Here is an easy way in VB6 using ADO to remove duplicate row…
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…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
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…

776 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