Excel no usa aritmética decimal


Para los que hacen sus cuentas de dinero con Excel, tengan presente que no usa aritmética decimal y que pueden estar teniendo errores muy sutiles que no siempre saltan a la vista.

Para Excel 1,23 – 1,12 – 0,11 = -0,00000000000000012490009027033.

Excel

No hace falta ser matemático para saber que el resultado correcto es 0. La causa es que Excel hace la cuenta usando números binarios de coma flotante. En parte el problema es este: https://ignorante.wordpress.com/2007/06/15/decimal-vs-binario/.

Imaginamos que el banco usa Excel para calcular el saldo de nuestra cuenta bancaria. Con ese resultado tendríamos saldo negativo (algo incorrecto) y el banco podría cobrarnos un servicio de giro en descubierto o intereses.

¿Es muy difícil hacer que el resultado de ese tipo de restas sea el correcto? No. Es un problema que se conoce desde que se inventaron las computadoras y que se resolvió en la década del 60, por eso los bancos no tiene ese problema. Es una lástima que un producto moderno no funcione como debería sin motivo aparente más que la compatibilidad hacia atrás y la falta real de incentivo para mejorarlo. La planilla de cálculo de la suite OpenOffice.org, Calc, da el resultado correcto.

Calc

Según se puede ver Calc no sólo da el resultado correcto sino que da más decimales precisos que Excel. Tenemos 20 decimales correctos en Calc contra 15 en Excel. La versión usada es Excel 2003, pero este problema lo tienen todas las versiones incluída la 2007.

Microsoft lo explica muy bien: http://support.microsoft.com/kb/78113 y da algunas mal llamadas soluciones para que el error no se vea: http://support.microsoft.com/kb/214118.

La primera solución (usar la función de redondeo) es un arma de doble filo ya que en algunos casos el resultado redondeado será el correcto, pero en otros seguirá siendo incorrecto dependiendo del valor original. La segunda solución es aún más peligrosa. Le indica a Excel que tome el valor mostrado y no el valor calculado. Es decir que si en la celda se almacena 1,001, pero se muestra 1,00 por estar la celda formateada a dos decimales entonces usará en número 1 y no el 1,001 como valor en las cuentas que involucren esa celda.

Anuncios

Un pensamiento en “Excel no usa aritmética decimal

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s