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).