2. Números naturales, enteros, racionales y reales

Los programas trabajan constantemente con cantidades. Para elegir el tipo de dato correcto y evitar errores, primero conviene entender qué clases de números usamos y qué representan.

2.1 Introducción

En matemática no todos los números cumplen el mismo papel. Algunos sirven para contar objetos, otros para expresar deudas o temperaturas bajo cero, otros para representar partes de una unidad y otros para medir magnitudes continuas.

En programación ocurre algo similar. Un programa puede necesitar contar usuarios, guardar un saldo negativo, calcular un promedio decimal o representar una coordenada en pantalla. Entender los conjuntos numéricos ayuda a interpretar mejor esos valores.

En JavaScript existe el tipo number para la mayoría de los valores numéricos y el tipo bigint para enteros muy grandes. Aun así, los conceptos matemáticos siguen siendo necesarios para razonar correctamente.

2.2 Números naturales

Los números naturales son los que usamos para contar. Normalmente se escriben como:

0, 1, 2, 3, 4, 5, 6, ...

Según el contexto, algunos libros comienzan los naturales en 1 y otros incluyen el 0. En programación es muy común incluir el 0 porque los índices de muchos arreglos comienzan en cero.

  • Cantidad de productos en un carrito.
  • Número de intentos realizados por un usuario.
  • Índice de una posición dentro de un arreglo.
  • Cantidad de vidas restantes en un juego.
const productos = ["teclado", "mouse", "monitor"];

console.log(productos.length);
console.log(productos[0]);

El resultado muestra que hay tres productos, pero el primer elemento está en la posición 0. Esta relación entre conteo e índices aparece constantemente al programar.

2.3 Números enteros

Los números enteros incluyen los naturales, sus opuestos negativos y el cero:

..., -3, -2, -1, 0, 1, 2, 3, ...

Los enteros permiten representar valores que pueden estar por encima o por debajo de una referencia. Por ejemplo, una temperatura bajo cero, una deuda, una diferencia de puntos o un desplazamiento hacia la izquierda.

const saldoInicial = 500;
const compra = 750;
const saldoFinal = saldoInicial - compra;

console.log(saldoFinal);

El resultado es un entero negativo. Eso indica que la compra supera el saldo disponible.

2.4 Enteros en decisiones de programa

Los enteros también se usan para controlar ciclos, validar cantidades y comparar estados.

const stock = 0;

if (stock > 0) {
  console.log("Producto disponible");
} else {
  console.log("Producto sin stock");
}

La comparación usa un número entero para decidir qué mensaje mostrar. Aunque parezca simple, este tipo de validación es parte de muchos sistemas reales.

2.5 Números racionales

Los números racionales son aquellos que pueden expresarse como una fracción entre dos enteros, con denominador distinto de cero.

1/2, 3/4, -5/2, 0.25, 2.75

Los racionales aparecen cuando una cantidad se divide en partes. En programación se ven al calcular promedios, precios unitarios, porcentajes, proporciones o velocidades.

const total = 45;
const personas = 4;
const partePorPersona = total / personas;

console.log(partePorPersona);

El resultado no es entero porque 45 dividido por 4 produce una cantidad con parte decimal.

2.6 Fracciones y decimales

Una misma cantidad racional puede escribirse como fracción o como decimal. Por ejemplo, 1/2 equivale a 0.5, y 1/4 equivale a 0.25.

Fracción Decimal Interpretación
1/2 0.5 La mitad de una unidad
1/4 0.25 La cuarta parte de una unidad
3/4 0.75 Tres cuartas partes
1/3 0.333... Decimal periódico

En JavaScript, las fracciones se escriben como divisiones. El lenguaje calcula el valor decimal correspondiente.

console.log(1 / 2);
console.log(1 / 4);
console.log(1 / 3);

2.7 Números reales

Los números reales incluyen los naturales, enteros, racionales y también números que no pueden expresarse como fracción exacta entre enteros. A estos últimos se los llama irracionales.

Ejemplos de números reales irracionales son la raíz cuadrada de 2 y el número pi. En programación se usan aproximaciones porque la memoria de la computadora es finita.

console.log(Math.sqrt(2));
console.log(Math.PI);

Los resultados son aproximaciones decimales. Son suficientes para muchos cálculos, pero conviene recordar que no son representaciones infinitamente exactas.

2.8 Relación entre los conjuntos numéricos

Los conjuntos numéricos se contienen unos a otros. Todo número natural es entero, todo entero es racional y todo racional es real. Pero no toda relación funciona al revés.

Conjunto Incluye Ejemplos Uso típico en programación
Naturales Valores para contar 0, 1, 2, 3 Cantidades e índices
Enteros Naturales, cero y negativos -2, -1, 0, 1 Saldos, diferencias y desplazamientos
Racionales Fracciones y decimales finitos o periódicos 1/2, -3/4, 0.25 Promedios, porcentajes y proporciones
Reales Racionales e irracionales 2, -4.5, pi, raíz de 2 Mediciones, coordenadas y cálculos continuos

2.9 El tipo number en JavaScript

JavaScript usa el tipo number para representar tanto enteros como decimales. Eso hace que sea cómodo para empezar, pero también exige entender sus límites.

const cantidad = 12;
const precio = 19.99;
const total = cantidad * precio;

console.log(typeof cantidad);
console.log(typeof precio);
console.log(total);

Tanto cantidad como precio son de tipo number, aunque uno sea entero y el otro tenga decimales.

2.10 Cómo saber si un número es entero

Cuando necesitamos validar datos, puede ser importante saber si un valor es entero. Por ejemplo, una cantidad de entradas compradas no debería ser 2.5.

const entradas = 3;
const promedio = 8.5;

console.log(Number.isInteger(entradas));
console.log(Number.isInteger(promedio));

Esta validación es útil en formularios, sistemas de stock, turnos, reservas y cualquier caso donde solo tengan sentido cantidades enteras.

2.11 Enteros muy grandes y BigInt

JavaScript puede representar muchos números, pero los enteros muy grandes pueden perder precisión si se guardan como number. Para esos casos existe BigInt.

const numeroGrande = 9007199254740993n;
const otroNumeroGrande = numeroGrande + 2n;

console.log(otroNumeroGrande);

La letra n al final indica que el valor es un BigInt. Este tipo se usa cuando se necesitan enteros de gran tamaño sin pérdida de precisión.

2.12 Valores especiales en JavaScript

Además de los números comunes, JavaScript puede producir valores especiales como Infinity, -Infinity y NaN.

Valor Significado Ejemplo
Infinity Resultado que supera un valor finito representable o división positiva por cero 1 / 0
-Infinity Infinito negativo -1 / 0
NaN Resultado que no es un número válido 0 / 0
console.log(1 / 0);
console.log(-1 / 0);
console.log(0 / 0);

2.13 Validar números en programas

En aplicaciones reales, muchos valores vienen de formularios, archivos o servicios externos. Por eso conviene validar antes de calcular.

const edad = 25;

if (Number.isFinite(edad) && Number.isInteger(edad) && edad >= 0) {
  console.log("Edad válida");
} else {
  console.log("Edad inválida");
}

La validación comprueba tres cosas: que el valor sea finito, que sea entero y que no sea negativo. Es una forma práctica de aplicar conceptos numéricos básicos.

2.14 Qué debes recordar de este tema

  • Los naturales sirven principalmente para contar.
  • Los enteros permiten representar valores positivos, negativos y cero.
  • Los racionales pueden escribirse como fracciones y suelen aparecer como decimales.
  • Los reales incluyen racionales e irracionales, aunque la computadora usa aproximaciones.
  • En JavaScript, el tipo number representa enteros y decimales, y BigInt representa enteros muy grandes.
  • Validar números evita errores en cálculos, formularios y decisiones del programa.

2.15 Conclusión

Los conjuntos numéricos no son una clasificación abstracta sin utilidad: ayudan a entender qué tipo de dato estamos usando y qué operaciones tienen sentido. Contar productos no es lo mismo que calcular un promedio, representar una deuda o aproximar el valor de pi.

En el próximo tema estudiaremos las operaciones fundamentales: suma, resta, multiplicación y división.