• Status: Solved
• Priority: Medium
• Security: Public
• Views: 338

# Proper way to round up a number and store it?

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.... :>)
0
SOTA
• 3
• 3
• 2
• +1
2 Solutions

Commented:
Hi SOTA,

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.

Pete
0

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

format(0.04655,"#.##")
0

Commented:
I normally use format for this

format(field,"0.00")

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

12.5

format results in 12.50
round results in 12.5

0

Commented:
?format(0.04655,"#.##")
0

Author Commented:
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?

Thanks!
0

Author Commented:
Ah! I just found this:

ACC: Round or Truncate Values to Intended Number of Decimals
Article ID : 97524
Last Review : August 15, 2005
Revision : 2.1
Moderate: Requires basic macro, coding, and interoperability skills.

SUMMARY

Examples of Using the Round and Truncate Functions

Example 1

Example 2

Limitations
SUMMARY
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

0

Commented:
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.

Pete

0

Commented:
This one is more flexible...may be better for you:

http://support.microsoft.com/?kbid=209996

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
Else
If IsMissing(varUp) Then
' round down
dblTemp = lngTemp
Else
' 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.
0

Author Commented:
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 :>)

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.

## Featured Post

• 3
• 3
• 2
• +1
Tackle projects and never again get stuck behind a technical roadblock.