Article ID: 97524 - Last Review: January 18, 2007 - Revision: 2.3 ACC: Round or Truncate Values to Intended Number of DecimalsThis article was previously published under Q97524 Moderate: Requires basic macro, coding, and interoperability skills.
On This PageSUMMARY
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 MORE INFORMATION
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. Examples of Using the Round and Truncate FunctionsThe following examples use the sample database Northwind.mdb (or NWIND.MDB in version 2.0 or earlier).CAUTION: Following the steps in these examples will modify the sample database Northwind.mdb (or NWIND.MDB in version 2.0 or earlier). You may want to back up the Northwind.mdb (or NWIND.MDB) file and perform these steps on a copy of the database. Example 1Use the TruncAU() function to the AfterUpdate property of a form:
Example 2Use the RoundCC() function with an expression in a report's group footer. This example assumes that you have already created the Rounding module in step 2 of Example 1:
10 = 1 decimal place
100 = 2 decimal places
1000 = 3 decimal places, and so on
LimitationsThese functions should only be used with Currency data. If used with Double or Single numbers, you may still receive minor rounding errors. The reason for this is that Single and Double numbers are floating point. They cannot store an exact binary representation of decimal fractions. Therefore there will always be some error. However, Currency values are scaled integers and can store an exact binary representation of fractions to 4 decimal places.APPLIES TO
| Article Translations
|

Back to the top
