6. Notación científica y números muy grandes o muy pequeños

La notación científica permite escribir cantidades enormes o diminutas de forma compacta. En programación es clave para trabajar con medidas, datos científicos, escalas y límites numéricos.

6.1 Introducción

En programación a veces trabajamos con números muy grandes, como cantidad de operaciones, bytes almacenados o distancias astronómicas. Otras veces usamos números muy pequeños, como tiempos en segundos, probabilidades, errores numéricos o medidas microscópicas.

Escribir todos los ceros puede ser incómodo y propenso a errores. La notación científica resuelve este problema usando potencias de 10.

JavaScript permite escribir números en notación científica mediante la letra e, que significa “por 10 elevado a”.

6.2 Qué es la notación científica

La notación científica escribe un número como un producto entre un valor decimal y una potencia de 10.

número = coeficiente × 10ᵉˣᵖᵒⁿᵉⁿᵗᵉ

Por ejemplo, el número 300000 puede escribirse como:

3 × 10⁵

Esto significa que el 3 se multiplica por 100000.

console.log(3 * 10 ** 5);
console.log(300000);

6.3 Notación científica en JavaScript

En JavaScript, la expresión 3e5 representa 3 × 10⁵. La letra e no es una variable; forma parte de la escritura numérica.

console.log(3e5);
console.log(1.2e4);
console.log(7.5e3);

Esta forma es frecuente en datos científicos, configuraciones de escala, cálculos de rendimiento y valores muy extensos.

6.4 Exponentes positivos

Cuando el exponente es positivo, el número se hace más grande. Cada aumento de 1 en el exponente multiplica por 10.

Notación Valor desarrollado Lectura
1e1 10 1 por 10 elevado a 1
1e2 100 1 por 10 elevado a 2
1e3 1000 1 por 10 elevado a 3
2.5e6 2500000 2.5 por 10 elevado a 6
console.log(1e1);
console.log(1e2);
console.log(1e3);
console.log(2.5e6);

6.5 Exponentes negativos

Cuando el exponente es negativo, el número se hace más pequeño. Cada disminución de 1 en el exponente divide por 10.

Notación Valor desarrollado Lectura
1e-1 0.1 1 por 10 elevado a -1
1e-2 0.01 1 por 10 elevado a -2
1e-3 0.001 1 por 10 elevado a -3
4.2e-6 0.0000042 4.2 por 10 elevado a -6
console.log(1e-1);
console.log(1e-2);
console.log(1e-3);
console.log(4.2e-6);

6.6 Convertir números a notación exponencial

JavaScript permite convertir un número a una cadena en notación exponencial usando toExponential().

const distancia = 149600000;
const medidaPequena = 0.00000042;

console.log(distancia.toExponential());
console.log(medidaPequena.toExponential());

El resultado es texto, no un nuevo tipo de número. Es útil para mostrar valores largos de forma compacta.

6.7 Controlar la cantidad de decimales

El método toExponential() puede recibir un número que indica cuántos dígitos se mostrarán después del punto decimal.

const numero = 123456789;

console.log(numero.toExponential(2));
console.log(numero.toExponential(4));
console.log(numero.toExponential(6));

Esto ayuda a presentar resultados sin saturar la pantalla con demasiados dígitos.

6.8 Aplicación: unidades de almacenamiento

Las potencias aparecen al hablar de almacenamiento. Aunque en informática existen diferencias entre potencias de 10 y potencias de 2, muchas estimaciones usan valores como miles, millones o miles de millones de bytes.

const kilobyteDecimal = 1e3;
const megabyteDecimal = 1e6;
const gigabyteDecimal = 1e9;

console.log(kilobyteDecimal);
console.log(megabyteDecimal);
console.log(gigabyteDecimal);

La notación científica permite escribir estos valores con menos ceros y menos riesgo de error visual.

6.9 Aplicación: tiempos muy pequeños

En mediciones de rendimiento, física o simulaciones, podemos trabajar con tiempos muy pequeños. Por ejemplo, un microsegundo es una millonésima de segundo.

const milisegundo = 1e-3;
const microsegundo = 1e-6;
const nanosegundo = 1e-9;

console.log(milisegundo);
console.log(microsegundo);
console.log(nanosegundo);

Estos valores son más legibles en notación científica que escritos con muchos ceros a la izquierda.

6.10 Límites grandes en JavaScript

JavaScript tiene un valor máximo aproximado que puede representar como número finito. Ese límite está disponible en Number.MAX_VALUE.

console.log(Number.MAX_VALUE);
console.log(Number.MAX_VALUE.toExponential());

Si un cálculo supera el máximo representable, el resultado puede convertirse en Infinity.

console.log(Number.MAX_VALUE * 2);

6.11 Números muy pequeños en JavaScript

JavaScript también define Number.MIN_VALUE, que representa el número positivo más pequeño mayor que cero que puede manejar como number.

console.log(Number.MIN_VALUE);
console.log(Number.MIN_VALUE.toExponential());

Si un valor se vuelve demasiado pequeño para ser representado, puede terminar redondeándose a cero.

console.log(Number.MIN_VALUE / 2);

6.12 Precisión y números grandes

Que JavaScript pueda representar un número grande no significa que todos los enteros grandes se representen con precisión exacta. Para enteros seguros existe el límite Number.MAX_SAFE_INTEGER.

console.log(Number.MAX_SAFE_INTEGER);
console.log(Number.MAX_SAFE_INTEGER + 1);
console.log(Number.MAX_SAFE_INTEGER + 2);

Cuando necesitamos enteros enormes sin pérdida de precisión, podemos usar BigInt, como vimos en el tema anterior.

6.13 Notación científica y BigInt

BigInt permite trabajar con enteros grandes, pero no se escribe con notación científica decimal como 1e20. Se escribe agregando n al final de un entero.

const enteroGrande = 100000000000000000000n;
const resultado = enteroGrande + 5n;

console.log(resultado);

Este tipo es útil cuando el valor debe ser entero y exacto, por ejemplo en identificadores grandes, contadores o ciertos cálculos financieros.

6.14 Errores comunes

  • Confundir 1e3 con una variable llamada e. En un número, la e indica potencia de 10.
  • Creer que todos los números grandes son enteros exactos en JavaScript.
  • Mostrar demasiados dígitos cuando una notación exponencial sería más legible.
  • Ignorar que valores demasiado grandes pueden convertirse en Infinity.
  • Ignorar que valores demasiado pequeños pueden redondearse a cero.
console.log(1e3);
console.log(1e308);
console.log(1e309);
console.log(1e-324);

6.15 Qué debes recordar de este tema

  • La notación científica escribe números como un coeficiente multiplicado por una potencia de 10.
  • En JavaScript, 3e5 significa 3 × 10⁵.
  • Los exponentes positivos representan números grandes.
  • Los exponentes negativos representan números pequeños.
  • toExponential() permite mostrar números en formato exponencial.
  • Number.MAX_VALUE y Number.MIN_VALUE ayudan a entender límites de representación.
  • Para enteros enormes exactos se debe considerar BigInt.

6.16 Conclusión

La notación científica es una herramienta práctica para expresar números extremos sin escribir largas cadenas de ceros. En programación mejora la legibilidad y ayuda a trabajar con medidas, escalas, límites y datos científicos.

En el próximo tema estudiaremos divisibilidad, múltiplos y divisores.