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.
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”.
La notación científica escribe un número como un producto entre un valor decimal y una potencia de 10.
Por ejemplo, el número 300000 puede escribirse como:
Esto significa que el 3 se multiplica por 100000.
console.log(3 * 10 ** 5);
console.log(300000);
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.
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);
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);
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.
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.
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.
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.
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);
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);
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.
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.
console.log(1e3);
console.log(1e308);
console.log(1e309);
console.log(1e-324);
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.