MS Access: función circular

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

MS Access: función circular

Este tutorial de MSAccess describe cómo usar Access función redonda Con sintaxis y ejemplos.

describir

La función de redondeo de Microsoft Access devuelve un número redondeado al número especificado de lugares decimales. Sin embargo, el comportamiento de la función Round es un poco peculiar, utiliza lo que comúnmente se conoce como redondeo bancario. Por lo tanto, antes de usar esta función, lea lo siguiente:

La función Round utiliza lógica de redondeo. Si la expresión a redondear termina en 5, la función Round redondeará la expresión para que el último dígito sea par.

Por ejemplo:

Round (12.55, 1)
Result: 12.6   (rounds up)

Round (12.65, 1)
Result: 12.6   (rounds down)

Round (12.75, 1)
Result: 12.8   (rounds up)

En estos casos, el último dígito después del redondeo siempre es par. Así que asegúrese de usar solo la función Redondear si este es el resultado que desea.

sintaxis

La sintaxis de la función Ronda en MS Access es:

Round ( expression, [ decimal_places ] )

parámetro o parámetro

Expresión Expresión numérica a redondear. lugares_decimales Opcional. Es el número de lugares decimales para redondear la expresión. Si se omite este parámetro, la función Round devolverá un número entero.

aplicar para

La función Redondear está disponible en las siguientes versiones de Microsoft Access:

  • Acceso 2019, Acceso 2016, Acceso 2013, Acceso 2010, Acceso 2007, Acceso 2003, Acceso XP, Acceso 2000

ejemplo

Echemos un vistazo a cómo usar la función Ronda en MS Access:

Round (210.67, 1)
Result: 210.7

Round (210.67, 0)
Result: 211

Round (210.67)
Result: 211

Ejemplo en código VBA

La función Round se puede usar en código VBA en Microsoft Access.

Por ejemplo:

Dim LNumber As Double

LNumber = Round (210.67, 1)

En este ejemplo, la variable llamada LNumber ahora contendrá el valor 210.7.

Ejemplo en SQL/Query

También puede utilizar la función Redondear en una consulta de Microsoft Access.

Por ejemplo:

En esta consulta, usamos la función Round de la siguiente manera:

Expr1: Round([UnitPrice],1)

Esta consulta devuelve el UnitPrice redondeado a 1 decimal y muestra el resultado en una columna denominada Expr1. Puede reemplazar Expr1 con un nombre de columna más significativo.

Por ejemplo:

RoundedValue: Round([UnitPrice],1)

Los resultados ahora se mostrarán en una columna llamada RoundedValue.

Consejos para evitar el redondeo bancario:

Si desea evitar el redondeo bancario, puede crear su propia función personalizada como esta:

' This function overcomes the bankers Rounding that occurs in the
' built-in VBA Round function to provide true (symmetric) numeric Rounding
' Created by TechOnTheNet.com
Public Function StandardRound(pValue As Double, pDecimalPlaces As Integer) As Variant

    Dim LValue As String
    Dim LPos As Integer
    Dim LNumDecimals As Long
    Dim LDecimalSymbol As String
    Dim QValue As Double

    ' Return an error if the decimal places provided is negative
    If pDecimalPlaces < 0 Then
       StandardRound = CVErr(2001)
          Exit Function
    End If

    ' If your country uses a different symbol than the "." to denote a decimal
    ' then change the following LDecimalSymbol variable to that character
    LDecimalSymbol = "."

    ' Determine the number of decimal places in the value provided using
    ' the length of the value and the position of the decimal symbol
    LValue = CStr(pValue)
    LPos = InStr(LValue, LDecimalSymbol)
    LNumDecimals = Len(LValue) - LPos

    ' Round if the value provided has decimals and the number of decimals
    ' is greater than the number of decimal places we are rounding to
    If (LPos > 0) And (LNumDecimals > 0) And (LNumDecimals > pDecimalPlaces) Then

        ' Calculate the factor to add
        QValue = (1 / (10 ^ (LNumDecimals + 1)))

        ' Symmetric rounding is commonly desired so if the value is
        ' negative, make the factor negative
        ' (Remove the following 3 lines if you require "Round Up" rounding)
        If (pValue < 0) Then
            QValue = -QValue
        End If

        ' Add a 1 to the end of the value (For example, if pValue is 12.65
        ' then we will use 12.651 when rounding)
        StandardRound = Round(pValue + QValue, pDecimalPlaces)

    ' Otherwise return the original value
    Else
        StandardRound = pValue
    End If

End Function

Luego llame a la función StandardRound en lugar de usar la función Round.

Preguntas frecuentes

Pregunta: Leí su explicación de la función de redondeo usando la lógica de redondeo a par. Sin embargo, necesito redondear algunos valores en el sentido tradicional (donde 5 siempre redondea). ¿Cómo puedo hacer esto?

R: Siempre puedes usar la siguiente lógica:

Si desea redondear 12,65 a 1 lugar decimal en el sentido tradicional (donde 12,65 se redondea a 1 lugar decimal es 12,7, no 12,6), intente agregar 0,000001 a su número antes de aplicar la función Redondear:

Round(12.45+0.000001,1)

Al agregar 0.000001, la expresión que desea redondear terminará en 1, no en 5… haciendo que la función Round redondee de la manera tradicional.

Y 0,000001 no afecta significativamente el valor de la expresión, por lo que no debería introducir ningún error de cálculo.

(Visited 16 times, 1 visits today)