sábado, octubre 07, 2006

Problemas de redondeo y precisión en Excel

Excel suele presentar en ciertas situaciones lo que parecieran ser problemas de cálculo.
Veamos una situación con la cual me enfrenté no hace mucho al elaborar una solución para uno de mis lectores. La idea era desarrollar una fórmula que cada vez que la parte fraccional de un número fuera 0.1 diera un determinado resultado.
Aparentemente una tarea sencilla. Por ejemplo si el número a evaluar en al celda A2 es 4.1, aplicamos esta fórmula en la celda B2:

=A2-ENTERO(A2)

esta fórmula da como resultado 0.1, lo que usaremos como argumento en una fórmula en la celda C2. En la celda C2 he puesto la fórmula =B2=0.1, que tiene que dar como resultado VERDADERO. Veamos que pasa en Excel




Como vemos el resultado es FALSO. Esto se debe a que Excel, como la mayoría de los programas, guarda los números en forma binaria de acuerdo al estándar 754 (Punto Flotante) del IEEE.
Si están interesados en ampliar conocimientos sobre este tema pueden consultar el
artículo en la base de conocimientos de Microsoft (también hay una versión en castellano) o el artículo de Chip Pearson sobre el tema.

Volviendo sobre el tema, veamos si lo que vemos es lo que es. Agreguemos 16 decimales al formato de la celda B2



Como ven el resultado de la fórmula es un número muy cercano a 0.1, pero no exactamente 0.1. Este fenómeno está explicado en los artículos mencionados más arriba.

Antes de encarar la solución del problema, veamos otra situación similar que hace sufrir especialmente a los contadores. Veamos esta situación:




Si nos fijamos sólo en la columna C, nos parecerá que Excel se equivoca al sumar los tres números 0.3. El resultado esperado es 0.9 y Excel da 1.0. Por supuesto que Excel no se equivoca, y el problema es un problema de formato.
Sin embargo, en los informes financieros, si quisiéramos que Excel de cómo resultado 0.9.

Ambos problemas pueden ser solucionados de dos maneras:

1 – Usar funciones de redondeo de Excel. Por ejemplo, si en la celda B2 combinamos la fórmula con la función REDONDEAR

=REDONDEAR(A2-ENTERO(A2),1)
obtenemos



2 – Usar la opción Precisión de Pantalla en el menú Herramientas-Opciones-Cálculo



Luego de aplicar esta opción los resultados se convierten en




Al usar esta opción hay que tener en cuenta dos detalles muy importantes: el cambio es irreversible (los valores no volverán al estado anterior al cambio si desactivamos la opción) y es aplicado a todo el cuaderno, no sólo a la hoja activa o a un rango determinado.





Categorías: Manejo de Datos_, Varios_

Technorati Tags:

2 comentarios:

  1. Jorge, una duda que me surge al redondear.mas o redondear.menos es saber si existe la posibilidad de redondear a .00 o .05. Ejemplo: de 2.34 a 2.35 o de 2.32 a 2.30 ya que excel redondea a 2.40 o 2.30.

    Gracias

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.