Sunteți pe pagina 1din 4

No hay un nmero de diferentes algoritmos de redondeo disponibles en los productos de Microsoft.

Redondeo algoritmos comprendidos redondeo en aritmtica en funcin de hoja de clculo Round() de Excel y redondeo del banquero en las funciones CEntero(), CLng() y Round() en Visual Basic para aplicaciones. Este artculo describe qu el distintos de Visual Basic para aplicaciones redondeo de las funciones pendientes y proporciona ejemplos de las funciones. Adems, el artculo incluye funciones de ejemplo que implementan varios algoritmos de redondeo. Redondeo explicacin Deber redondear cuando desea convertir a un nmero de mayor precisin en un nmero de menor precisin. El caso ms comn es cuando necesita convertir a un nmero de punto flotante en un entero. Redondeo hacia abajo La forma ms sencilla de redondeo es truncamiento. Simplemente se omiten los dgitos situados tras la precisin deseado. La funcin VBA Fix() es un ejemplo del truncamiento. Por ejemplo, Fix(3.5) es 3, y Fix(-3.5) es-3. La funcin int() se redondea al entero ms alto inferior al valor. Int() y Fix() actan del mismo modo con nmeros positivos - truncar - pero dan resultados diferentes para los nmeros negativos: Int(-3.5) proporciona-4. La funcin Fix() es un ejemplo de redondeo simtrico porque afecta a la magnitud (valor absoluto) de nmeros positivos y negativos de la misma manera. La funcin int() es un ejemplo de redondeo asimtrico porque afecta a la magnitud de los nmeros positivos y negativos diferente. Excel tiene funciones de hoja de clculo similares: Int() Floor() y RoundDown(). Int() funciona del mismo modo int() en Visual Basic para aplicaciones. Floor() trunca los valores positivos, pero no funciona con los nmeros negativos. La funcin RoundDown() funciona del mismo modo que la funcin VBA Fix(). Microsoft SQL Server tiene una funcin de Round() puede actuar como la funcin VBA Fix(). SQL Server tambin tiene una funcin Floor(), que funciona igual que la funcin de VBA int(). Redondeo de SQL Server y Excel tienen una funcin denominada Ceiling(), que siempre redondea los valores fraccin hasta (ms positivo) el valor siguiente.

Visual Basic para aplicaciones no tiene una funcin de redondeo telefnico correspondiente. Sin embargo, para nmeros negativos, Fix() y int() pueden utilizarse para redondear hacia arriba, de diferentes maneras. Fix() redondea hacia 0 (copia en el sentido absoluto, pero hacia abajo en trminos de magnitud absoluto). Fix(-3.5) es-3.5. Redondea int() al alza (up en trminos de magnitud absoluto, pero hacia abajo en el sentido absoluto). Int(-3.5) es-4. Redondeo en aritmtica Para redondear siempre hacia abajo o arriba, el nmero resultante no es necesariamente el ms cercano al nmero original. Por ejemplo, si redondear 1,9 a 1, la diferencia es mucho mayor que si se redondear hasta 2. Es fcil ver que se deben redondear nmeros de 1,6 a 2,4 a 2. Sin embargo, qu sucede 1.5, que es equidistante entre 1 y 2? Por convencin, el nmero de mitad de se redondea hacia arriba. Puede implementar redondeando mitad de los nmeros de forma simtrica, que se redondea-.5 en -1 o en una forma asimtrica, donde-.5 se redondea a 0. Las siguientes funciones proporcionan redondeo aritmticos simtrico: La funcin de hoja de clculo de Excel Round(). Puede realizar la funcin de SQL Server Round() redondeo aritmticos simtrico. La siguiente funcin proporcionan redondeo aritmticos asimtrico: El mtodo Round() de la biblioteca Java Math. Visual Basic para aplicaciones no tiene ninguna funcin que realiza la aritmtica de redondeo. Redondeo del banquero Al agregar valores redondeados juntos, siempre redondeo 0,5 en la misma direccin da como resultado una diferencia que crece con los nmeros ms agrega juntos. Una forma de reducir la diferencia es con redondeo bancario. Redondea de redondeo del banquero 0,5 up a veces y a veces abajo. La convencin es para redondear al nmero par ms cercano, por lo que 1,5 y 2,5 se redondean al 3.5, 2 y 4.5 que ambos redondean a 4. Redondeo bancario es simtrica.

En Visual Basic para aplicaciones, las siguientes funciones numrico realizan redondeo bancario: CByte(), CEntero(), CLng(), CCur() y Round(). No hay funciones de hoja de clculo de Excel que realizan redondeo bancario. Redondeo aleatorio Incluso del redondeo, puede desviar totales. Puede tomar un paso adicional para quitar la diferencia por redondeo 0,5 hacia arriba o hacia abajo de forma verdaderamente aleatoria. De este modo, incluso si los datos es deliberadamente sesgados, diferencia podra reducirse. Sin embargo, mediante el redondeo aleatorio con datos distribuidos aleatoriamente puede dar lugar una mayor diferencia de redondeo bancario. Redondeo aleatorio puede provocar dos totales diferentes en los mismos datos. No hay productos de Microsoft implementan a algn tipo de procedimiento redondeo aleatorio. Alternativas de redondeo Redondeo alternativo es redondeo entre 0,5 hacia arriba y abajo 0,5 en sucesivas llamadas. No hay productos de Microsoft implementan un procedimiento alternativo de redondeo. La funcin Round() est implementado de forma incoherente La funcin de Round() no est implementada de forma coherente entre diferentes productos de Microsoft por motivos histricos. Funciones de redondeo definido por el usuario de ejemplo El cdigo de ejemplo en la seccin lista de la funcin siguiente proporciona implementaciones de ejemplo para cada uno de los tipos de redondeo que se describen. Todas estas funciones toman dos argumentos: el nmero se redondear y un factor opcional. Si el factor se omite, las funciones devuelven un entero creado por uno de los mtodos anteriores. Si se especifica el factor, se ajusta el nmero por el factor para crear diferentes efectos de redondeo. Por ejemplo AsymArith (2.55, 10) produce 2.6, es decir, redondea a 1/factor = 1/10 = 0,1. Redondeo a valores monetarios Cuando utiliza el tipo de datos de moneda, que es exacto hasta 4 dgitos decimales, normalmente se desea redondear 2 dgitos decimales para centavos. La funcin de Round2CB siguiente es una variacin rgida que se realiza redondeo bancario 2 dgitos decimales, pero no se multiplica al nmero original. Esto evita una

condicin de desbordamiento posible si el importe monetario se est acercando los lmites del tipo de datos moneda. Limitaciones de punto de flotante Todos las implementaciones de redondeo presentadas utilizan el tipo de datos double, que puede representar aproximadamente 15 dgitos decimales. Puesto que no todos los valores fraccionarios se pueden expresar exactamente, puede obtener resultados inesperados debido a que el valor de presentacin no coincide con el valor almacenado. Por ejemplo, el nmero 2,25 podra almacenar internamente como 2.2499999..., que podra redondear hacia abajo con aritmtica de redondeo, en lugar de configurar como cabra esperar. Adems, los clculos ms que un nmero se somete a la posibilidad mayor que el valor binario almacenado se desviarse del valor decimal ideal. Si ste es el caso, desea elegir un tipo de datos diferentes, como moneda, que es exacto de 4 posiciones decimales. Tambin puede realizar los tipos de datos Variant y uso CDec() para convertir todo en el tipo de datos decimal, que puede ser exacto a 28 dgitos decimales.

S-ar putea să vă placă și