• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 269
  • Last Modified:

Rounding

i need to be able to round down and round up (a number of course). any know how?
0
CyberAccess
Asked:
CyberAccess
1 Solution
 
TimCotteeHead of Software ServicesCommented:
Use the Round() function!

Debug.Print Round(3.3)
Debug.Print Round(3.6)
Debug.Print Round(3.678,2)
0
 
gencrossCommented:
Sounds too easy :)
0
 
Arthur_WoodCommented:
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
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
Éric MoreauSenior .Net ConsultantCommented:
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
 
Joe_GriffithCommented:
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
 
Joe_GriffithCommented:
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
 
mbenassorCommented:
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now