Uso del tipo de datos Decimal para mejorar la precisión numérica de Excel.

 

Página inicial

 

 

La precisión numérica en Excel es de 15 dígitos. Esto se puede comprobar fácilmente:

1) Damos a una celda formato de Número, con 15 posiciones decimales (Formato -> Celdas [atajo Control 1] -> pestaña 'Número')

 


 

2) Ponemos en esa celda un número de 15 dígitos en su parte entera y algún decimal, por ejemplo 123456789012345,678

 


3) Al meter el dato veremos que Excel "se ha comido" los decimales y los muestra todos como ceros

 


4) "Movemos" la coma decimal uno o varios dígitos hacia la izquierda, por ejemplo 123456789012,345678

 


5) Veremos que Excel muestra los 3 primeros decimales bien pero los demás aparecen de nuevo como ceros.

 


6) Si ponemos más de 15 dígitos en la parte entera del número,

 

 

veremos cómo Excel convierte también a ceros los números a partir de su 16º dígito:

 



Hay un tipo de datos en VBA (Visual Basic for Applications) que puede ayudarnos si necesitamos operar con números muy grandes o muy pequeños y obtener resultados exactos hasta 29 dígitos: el tipo de datos Decimal. La ayuda de Excel describe este tipo de datos como:

"Las variables decimales se almacenan como enteros con signo de 96 bits (12 bytes) escalados con una potencia variable de 10. La potencia del factor de escala de 10 especifica el número de dígitos que hay a la derecha del signo decimal y varía desde 0 a 28. Con una escala de 0 (sin decimales), el mayor valor posible es +/-79.228.162.514.264.337.593.543.950.335. Con 28 posiciones decimales, el mayor valor es +/-7,9228162514264337593543950335 y el menor valor distinto de 0 es +/-0,0000000000000000000000000001.

Nota En este momento, el tipo de dato Decimal sólo se puede utilizar con un Variant, es decir, no puede declarar una variable de tipo Decimal. Sin embargo, puede crear un tipo Variant con subtipo Decimal utilizando la función CDec."
 


No es posible utilizar directamente este tipo de datos en una hoja de cálculo, pero sí es posible representar en la hoja los números que necesitemos como texto (lo que se consigue dando formato de texto a la celda o anteponiéndole una apóstrofo ' al número) para evitar que se pierdan los dígitos que exceden la precisión numérica máxima, y convertirlos al tipo Decimal para poder operar con ellos. Esto se logra usando funciones de usuario (UDFs en inglés).

En este libro hay ejemplos del uso de las siguiente funciones:
 

 - MultiplicaciónDecimal
 - SumaDecimal
 - SustracciónDecimal
 - DivisiónDecimal
 - ResiduoDecimal
 - PotenciaciónDecimal

 - Raíz2Decimal

 - FibonacciDecimal

 - FactorialDecimal

 - PrimorialDecimal

(Nota: el sufijo "Decimal" se refiere al uso que hacen estas funciones del tipo de datos Decimal).


En el libro también es posible comprobar las diferencias entre los resultados obtenidos al usar la precisión numérica de Excel y la de este tipo de datos.
 

El código de las funciones se puede ver entrando en el editor de VBA (Alt + F11).

 

 

Página inicial