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.