Access SQL has a rich function set one of which is the round function.

Example:

SELECT Round(Avg([Item Master].PlannedLeadTime),2) AS AverageLeadTime
FROM [Item Master]
WHERE (...)

Further information: http://www.techonthenet.com/access/functions/numeric/round.php

Answer from mwurth on Stack Overflow
🌐
Access World
access-programmers.co.uk › home › forums › microsoft access discussion › queries
Format within Query to 2 decimal places. | Access World Forums
July 28, 2017 - Format the query column - right click it get the properties up then select fixed and put 2 in the decimal places.
Discussions

How do I get numbers to round to 2 decimal places in an Access report?
I can't seem to figure out how to get numbers to round to 2 decimal places in an Access report where I have the report showing an average. Can anyone help? More on answers.microsoft.com
🌐 answers.microsoft.com
4
162
March 9, 2011
SQL Round to 2 Decimal Points?? | Access World Forums
In the design view of the query, right click on the [CountofStudent Attended] field and select Properties. Set the Format item to Fixed and then the Decimal Places item to 2. hope that helps, gromit ... When you actually display your data, where in a form or a report, use the following as the subject fields control source =Round... More on access-programmers.co.uk
🌐 access-programmers.co.uk
January 6, 2006
Rounding off to two decimal places in SQL - Stack Overflow
I need to convert minutes to hours, rounded off to two decimal places. I also need to display only up to two numbers after the decimal point. So if I have minutes as 650, then hours should be 10.83... More on stackoverflow.com
🌐 stackoverflow.com
vba - Rounding decimal places in Access - Stack Overflow
I'm using Access to populate some accounting forms and found an issue where it's add .01 to my excel sheets. The database is set to divide a number in half with 3 decimal places. The issue I'm havi... More on stackoverflow.com
🌐 stackoverflow.com
🌐
Allenbrowne
allenbrowne.com › round.html
Microsoft Access tips: Rounding numbers in Access
Access displays currency fields rounded to the nearest cent, but it stores the value to the hundredth of a cent (4 decimal places.) The Round() function in Access uses a bankers rounding. When the last significant digit is a 5, it rounds to the nearest even number. So, 0.125 rounds to 0.12 ...
🌐
W3Schools
w3schools.com › sql › func_msaccess_round.asp
MS Access Round() Function
The Round() function rounds a number to a specified number of decimal places.
🌐
Microsoft Support
support.microsoft.com › en-us › office › round-function-921ce538-c9a6-41e2-be87-28e685b59935
Round Function - Microsoft Support
Syntax for the function that returns a number rounded to a specified number of decimal places in Access.
🌐
Hightouch
hightouch.com › sql-dictionary › sql-round
SQL ROUND - Syntax, Use Cases, and Examples | Hightouch
December 29, 2023 - We want to round these prices to two decimal places: SELECT ROUND(price, 2) as rounded_price FROM product_prices -- Comment the line below to show it doesn't affect the query.
Find elsewhere
🌐
Docteurpierreguy
tdrl.docteurpierreguy.fr › access-query-round-to-2-decimal-places.html
Access Query Round To 2 Decimal Places
The End Result: The sum of the range is returned, rounded to 2 decimal places. 45M; decimalVar = decimal. your specific query. Works in: From Access 2000 MS Access Functions. to make the score round to 1DP or 2DP, but it only rounds to the nearest Full number.
🌐
Accessforums
accessforums.net › showthread.php
Format currency to exact decimal points
February 27, 2019 - Then format to 2 places in Excel. If I'm not mistaken, formatting in Excel will cause rounding anyway, so don't round (if that's the case) there either unless you don't care. ... I used the FormatCurrency in Access and is giving 2 decimal points.
🌐
Deepdatawithmivaa
deepdatawithmivaa.com › home › how to round to 2 decimal places in mysql?
How to round to 2 decimal places in MySQL?
February 2, 2026 - To round to two decimal places in MySQL, you can use the ROUND() function. This function takes two arguments: the number you want to round and the number of decimal places you want to round to. For example, ROUND(your_number, 2) will round your_number to two decimal places.
🌐
Access World
access-programmers.co.uk › home › forums › microsoft access discussion › queries
SQL Round to 2 Decimal Points?? | Access World Forums
January 6, 2006 - When you actually display your data, where in a form or a report, use the following as the subject fields control source =Round([FieldName],2) or set the control's 'Format' property to "Standard" without the quotation marks, and its 'Decimal Places' property to 2.
🌐
Got It AI
got-it.ai › solutions › sqlquerychat › sql-help › others › ms-access-round-function
MS Access Round Function - Querychat
January 2, 2020 - Sample result of Round function in an Access Query. From the above screenshot, we can see that the result of Round(145.673, 2) is 145.67, which is rounded to two decimal numbers.
Top answer
1 of 2
4

You can use the RoundUp and RoundDown functions found here at Experts Exchange and here at GitHub.

Your usage would be:

Value = 27.605 
Value1 = RoundUp(Value, 2)    ' 27.61 
Value2 = RoundDown(Value, 2)  ' 27.6

These are the functions:

' Rounds Value up with count of decimals as specified with parameter NumDigitsAfterDecimals.
'
' Rounds to integer if NumDigitsAfterDecimals is zero.
'
' Optionally, rounds negative values away from zero.
'
' Uses CDec() for correcting bit errors of reals.
'
' Execution time is about 0.5µs for rounding to integer
' else about 1µs.
'
Public Function RoundUp( _
    ByVal Value As Variant, _
    Optional ByVal NumDigitsAfterDecimals As Long, _
    Optional ByVal RoundingAwayFromZero As Boolean) _
    As Variant

    Dim Scaling     As Variant
    Dim ScaledValue As Variant
    Dim ReturnValue As Variant

    ' Only round if Value is numeric and ReturnValue can be different from zero.
    If Not IsNumeric(Value) Then
        ' Nothing to do.
        ReturnValue = Null
    ElseIf Value = 0 Then
        ' Nothing to round.
        ' Return Value as is.
        ReturnValue = Value
    Else
        If NumDigitsAfterDecimals <> 0 Then
            Scaling = CDec(Base10 ^ NumDigitsAfterDecimals)
        Else
            Scaling = 1
        End If
        If Scaling = 0 Then
            ' A very large value for Digits has minimized scaling.
            ' Return Value as is.
            ReturnValue = Value
        ElseIf RoundingAwayFromZero = False Or Value > 0 Then
            ' Round numeric value up.
            If Scaling = 1 Then
                ' Integer rounding.
                ReturnValue = -Int(-Value)
            Else
                ' First try with conversion to Decimal to avoid bit errors for some reals like 32.675.
                On Error Resume Next
                ScaledValue = -Int(CDec(-Value) * Scaling)
                ReturnValue = ScaledValue / Scaling
                If Err.Number <> 0 Then
                    ' Decimal overflow.
                    ' Round Value without conversion to Decimal.
                    ScaledValue = -Int(-Value * Scaling)
                    ReturnValue = ScaledValue / Scaling
                End If
            End If
        Else
            ' Round absolute value up.
            If Scaling = 1 Then
                ' Integer rounding.
                ReturnValue = Int(Value)
            Else
                ' First try with conversion to Decimal to avoid bit errors for some reals like 32.675.
                On Error Resume Next
                ScaledValue = Int(CDec(Value) * Scaling)
                ReturnValue = ScaledValue / Scaling
                If Err.Number <> 0 Then
                    ' Decimal overflow.
                    ' Round Value without conversion to Decimal.
                    ScaledValue = Int(Value * Scaling)
                    ReturnValue = ScaledValue / Scaling
                End If
            End If
        End If
        If Err.Number <> 0 Then
            ' Rounding failed because values are near one of the boundaries of type Double.
            ' Return value as is.
            ReturnValue = Value
        End If
    End If

    RoundUp = ReturnValue

End Function

And:

' Rounds Value down with count of decimals as specified with parameter NumDigitsAfterDecimals.
'
' Rounds to integer if NumDigitsAfterDecimals is zero.
'
' Optionally, rounds negative values towards zero.
'
' Uses CDec() for correcting bit errors of reals.
'
' Execution time is about 0.5µs for rounding to integer
' else about 1µs.
'
Public Function RoundDown( _
    ByVal Value As Variant, _
    Optional ByVal NumDigitsAfterDecimals As Long, _
    Optional ByVal RoundingToZero As Boolean) _
    As Variant

    Dim Scaling     As Variant
    Dim ScaledValue As Variant
    Dim ReturnValue As Variant

    ' Only round if Value is numeric and ReturnValue can be different from zero.
    If Not IsNumeric(Value) Then
        ' Nothing to do.
        ReturnValue = Null
    ElseIf Value = 0 Then
        ' Nothing to round.
        ' Return Value as is.
        ReturnValue = Value
    Else
        If NumDigitsAfterDecimals <> 0 Then
            Scaling = CDec(Base10 ^ NumDigitsAfterDecimals)
        Else
            Scaling = 1
        End If
        If Scaling = 0 Then
            ' A very large value for Digits has minimized scaling.
            ' Return Value as is.
            ReturnValue = Value
        ElseIf RoundingToZero = False Then
            ' Round numeric value down.
            If Scaling = 1 Then
                ' Integer rounding.
                ReturnValue = Int(Value)
            Else
                ' First try with conversion to Decimal to avoid bit errors for some reals like 32.675.
                ' Very large values for NumDigitsAfterDecimals can cause an out-of-range error when dividing.
                On Error Resume Next
                ScaledValue = Int(CDec(Value) * Scaling)
                ReturnValue = ScaledValue / Scaling
                If Err.Number <> 0 Then
                    ' Decimal overflow.
                    ' Round Value without conversion to Decimal.
                    ScaledValue = Int(Value * Scaling)
                    ReturnValue = ScaledValue / Scaling
                End If
            End If
        Else
            ' Round absolute value down.
            If Scaling = 1 Then
                ' Integer rounding.
                ReturnValue = Fix(Value)
            Else
                ' First try with conversion to Decimal to avoid bit errors for some reals like 32.675.
                ' Very large values for NumDigitsAfterDecimals can cause an out-of-range error when dividing.
                On Error Resume Next
                ScaledValue = Fix(CDec(Value) * Scaling)
                ReturnValue = ScaledValue / Scaling
                If Err.Number <> 0 Then
                    ' Decimal overflow.
                    ' Round Value with no conversion.
                    ScaledValue = Fix(Value * Scaling)
                    ReturnValue = ScaledValue / Scaling
                End If
            End If
        End If
        If Err.Number <> 0 Then
            ' Rounding failed because values are near one of the boundaries of type Double.
            ' Return value as is.
            ReturnValue = Value
        End If
    End If

    RoundDown = ReturnValue

End Function

Note please, that the native Round of VBA is quite buggy. See the test module of the download.

2 of 2
3

You won't get a better answer than Gustav's for proper rounding functions, and in the case of only two constituent values, then the complimentary RoundDown and RoundUp functions are sufficient. (FYI, similar functions are often named Floor and Ceiling in other languages and programming libraries.)

However, when it is critical to have constituent values sum to an original/expected value, it is best to calculate the last of the constituent values by a difference of the expected total and the sum of all other rounded values. This will guarantee the correct sum even if there are unexpected results from rounding. Even if using the buggy VBA Round() function, this technique would have avoided the 1 cent errors to start with.

surcharge1 = SomeRoundFunction(Total_Surcharge / 2.0)
surcharge2 = Total_Surcharge - surcharge1

This is especially important with more than two constituent values, since there is no set of rounding functions that will properly round 3 or more values to guarantee they add up to some value. As an example, I recently had to split out total transaction amounts by (re)calculating discounts and taxes. Although I knew the percentages for both, I needed to figure each part rounded to the penny. Penny errors were acceptable in both discount and tax, but they still needed to add up to the total after any rounding. The only guarantee to ensure that the final transaction value remained unchanged was to first calculate and round the tax, next calculate and round the discount, then finally correct for penny errors by subtracting the sum of parts from the expected total.

🌐
Post.Byes
post.bytes.com › home › forum › topic › access
Round a currency value to 2 decimal places in a query - Post.Byes
I am using Microsoft Access 2010 and I am trying to round a round a currency value to 2 decimal places in a query. The currency amount is still showing up as a whole number. Any help will be appreciated. AdminFeeInitalZmC: CCur(Nz(Round(([InitialPrem]*[FeeInitialZm])*-0.015,0),2))
🌐
TechOnTheNet
techonthenet.com › access › functions › numeric › round.php
MS Access: Round Function
This MSAccess tutorial explains how to use the Access Round function with syntax and examples. The Microsoft Access Round function returns a number rounded to a specified number of decimal places.
🌐
Baeldung
baeldung.com › home › sql functions › how to round numbers to two decimal places in sql
How to Round Numbers to Two Decimal Places in SQL Baeldung on SQL
June 21, 2024 - Therefore, we can use TRUNCATE to round decimals places in MYSQL: SELECT TRUNCATE(scores, 2) AS rounded_scores FROM exam; rounded_scores 84.45 92.67 75.21 ...
🌐
LearnSQL.com
learnsql.com › cookbook › how-to-round-numbers-in-sql
How to Round Numbers in SQL | LearnSQL.com
Suppose there’s a tax of 24% on each product, and you’d like to compute the gross price of each item (i.e., after taxes) and round the value to two decimal places. SELECT id, ROUND(price_net * 1.24, 2) as price_gross FROM product; This query ...