Proper way to round up a number and store it?

Posted on 2006-07-12
Last Modified: 2012-06-21
I am dividing a number which gives me a result of, for example: 0.04655

I wish to round this numbr up to 0.05 and store it in the data field. I have set the field to SINGLE with 2 Decimal places, but the number remains as 0.04655. How can I force a rounding-up of this number and then store it as 0.05?

I am sure it is "really" simple to do....but I am brain-dead today.... :>)
Question by:SOTA
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
  • 2
  • +1
LVL 77

Accepted Solution

peter57r earned 50 total points
ID: 17091195

If you want to STORE it like that then you need to use a Round() function on the value.  Be aware that the built-in Round() function might not be quite what you are expecting so test it on a range of values.

On the other hand, if you just want to <display> the value to 2dp then you can use the format and decimal place settings wherever you display it.

LVL 25

Expert Comment

ID: 17091254
Only the later versions of access have the round function.  In the earlier versions you have to:

LVL 65

Expert Comment

ID: 17091259
I normally use format for this


as round(field,2) sometimes does not gvie two decimal places


format results in 12.50
round results in 12.5

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

LVL 25

Expert Comment

ID: 17091260

Author Comment

ID: 17091476
Maybe that is why I am racking my brain! There is no Round() function in Access97, correct?

I have used Format(field,"0.00") but it only display this value. The "real" value remains as 0.04566, correct?

So, I need to find a Round() function that I can paste into my code?


Author Comment

ID: 17091500
Ah! I just found this:

ACC: Round or Truncate Values to Intended Number of Decimals
View products that this article applies to.
Article ID : 97524
Last Review : August 15, 2005
Revision : 2.1
This article was previously published under Q97524
Moderate: Requires basic macro, coding, and interoperability skills.

On This Page



Examples of Using the Round and Truncate Functions

Example 1

Example 2

The Format property of a control can round a Number or Currency field to the number of decimal places that you want. However, this does not change the underlying data, which may contain additional digits that the control does not display. If you add the values in this control, the sum is based on the actual values and not on the displayed values. This may make the total seem inaccurate.

This article shows you how to create four user-defined functions to round or truncate data to two decimal places so that the displayed and formatted value and the actual numeric or currency data are the same.

This article assumes that you are familiar with Visual Basic for Applications and with creating Microsoft Access applications using the programming tools provided with Microsoft Access. For more information about Visual Basic for Applications, please refer to your version of the "Building Applications with Microsoft Access" manual.

NOTE: Visual Basic for Applications is called Access Basic in Microsoft Access versions 1.x and 2.0. For more information about Access Basic, please refer to the "Introduction to Programming" manual in Microsoft Access version 1.x or the "Building Applications" manual in Microsoft Access version 2.0
 Back to the top

The functions are presented in two styles. The first style is appropriate for the AfterUpdate property of a form control to ensure that the data entered matches the data that is displayed. The second style is for use in expressions and calculated controls.

To round or truncate numbers to two decimal places, create a new module and add the following functions.
   ' Declarations section of the module

   Option Explicit
   Const Factor = 100

   ' RoundAU and TruncAU are designed to be added to the
   ' AfterUpdate property on a form control.
   Function RoundAU(X As Control)

      X = Int(X * Factor + .5) / Factor

   End Function

   Function TruncAU(X As Control)
      X = Int(X * Factor) / Factor
   End Function

   ' RoundCC and TruncCC are designed to be used in
   ' expressions and calculated controls on forms and reports.
   Function RoundCC(X)

      RoundCC = Int (X * Factor + 0.5) / Factor

   End Function

   Function TruncCC(X)
      TruncCC = Int (X * Factor) / Factor
   End Function

LVL 77

Expert Comment

ID: 17091535
Looks like you are on your way, now.

It's a pity this site doesn't force questions to include software versions.  It would save a lot of wasted time on both sides.

Good luck.

I think you should be able to apply for a refund, if you go to Community Support.


LVL 25

Assisted Solution

jrb1 earned 50 total points
ID: 17091545
This one is more flexible...may be better for you:

Function RoundToNearest(dblNumber As Double, varRoundAmount As Double, _
   Optional varUp As Variant) As Double
   Dim dblTemp As Double
   Dim lngTemp As Long
   dblTemp = dblNumber / varRoundAmount
   lngTemp = Clng(dblTemp)
   If lngTemp = dblTemp Then
         RoundToNearest = dblNumber
      If IsMissing(varUp) Then
         ' round down
         dblTemp = lngTemp
         ' round up
         dblTemp = lngTemp + 1
      End If
      RoundToNearest = dblTemp * varRoundAmount
   End If
End Function

• RoundToNearest(3.33, 0.1, up) returns the value 3.4.
• RoundToNearest(3.33, 0.1) returns the value 3.3.

Author Comment

ID: 17091671
Thanks peter57r and jrb1 for your replies! I decided to split points as you both have helped me out.

I like this one:

Function RoundToNearest(dblNumber As Double, varRoundAmount As Double, _
   Optional varUp As Variant) As Double

Thanks Experts!!!!
Russ :>)


Featured Post

Ransomware-A Revenue Bonanza for Service Providers

Ransomware – malware that gets on your customers’ computers, encrypts their data, and extorts a hefty ransom for the decryption keys – is a surging new threat.  The purpose of this eBook is to educate the reader about ransomware attacks.

Question has a verified solution.

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

Suggested Solutions

A simple tool to export all objects of two Access files as text and compare it with Meld, a free diff tool.
In Part II of this series, I will discuss how to identify all open instances of Excel and enumerate the workbooks, spreadsheets, and named ranges within each of those instances.
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

749 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