Skip to content

Lección 13: Números y el Objeto Math

JavaScript tiene un solo tipo numérico (number) que funciona tanto para enteros como decimales. El objeto Math proporciona funciones y constantes matemáticas muy útiles.

Los números decimales en JavaScript pueden tener problemas de precisión:

console.log(0.1 + 0.2); // 0.30000000000000004 (¡no es 0.3!)

Esto ocurre porque los números se almacenan en formato binario. Para controlar decimales usamos .toFixed():

let precio = 19.99;
console.log(precio.toFixed(1)); // "20.0" (string)
console.log(precio.toFixed(0)); // "20" (string)
console.log(Number(precio.toFixed(1))); // 20 (número)

Constantes:

console.log(Math.PI); // 3.141592653589793
console.log(Math.E); // 2.718281828459045

Redondeo:

console.log(Math.round(4.7)); // 5 (redondeo normal)
console.log(Math.round(4.3)); // 4
console.log(Math.floor(4.7)); // 4 (hacia abajo)
console.log(Math.ceil(4.3)); // 5 (hacia arriba)
console.log(Math.trunc(4.7)); // 4 (trunca decimales)

Números aleatorios:

Math.random(); // número entre 0 y 1 (excluye 1)
// Número entre 1 y 10:
Math.floor(Math.random() * 10) + 1;

Mínimo, máximo, valor absoluto:

console.log(Math.max(10, 5, 20, 8)); // 20
console.log(Math.min(10, 5, 20, 8)); // 5
console.log(Math.abs(-42)); // 42
console.log(Math.pow(2, 3)); // 8 (2³)
console.log(Math.sqrt(16)); // 4
// Sistema de calificaciones
let calificacion = 87.6;
console.log('Calificación original:', calificacion);
console.log('Redondeada:', Math.round(calificacion));
console.log('Hacia arriba:', Math.ceil(calificacion));
console.log('Hacia abajo:', Math.floor(calificacion));
// Número aleatorio entre 1 y 6 (como un dado)
let dado = Math.floor(Math.random() * 6) + 1;
console.log('🎲 Dado:', dado);
// Precio con formateo
let precio = 123.4567;
console.log('Precio:', precio.toFixed(2)); // "123.46"
// Calcular área de un círculo
let radio = 5;
let area = Math.PI * Math.pow(radio, 2);
console.log(`Área del círculo con radio ${radio}: ${area.toFixed(2)}`);
  1. Crea un archivo numeros-math.js.
  2. Genera un número aleatorio entre 1 y 100.
  3. Redondea hacia abajo, hacia arriba y normal.
  4. Calcula la raíz cuadrada y la potencia al cubo de un número.
  5. Encuentra el número mayor y el menor de una lista.
  6. Muestra Math.PI con 4 decimales usando .toFixed().
let aleatorio = Math.random() * 100;
console.log('Aleatorio:', aleatorio);
console.log('Floor:', Math.floor(aleatorio));
console.log('Ceil:', Math.ceil(aleatorio));
console.log('Round:', Math.round(aleatorio));
let numero = 9;
console.log(`${numero} =`, Math.sqrt(numero));
console.log(`${numero}³ =`, Math.pow(numero, 3));
console.log('Mayor:', Math.max(15, 3, 42, 8, 29));
console.log('Menor:', Math.min(15, 3, 42, 8, 29));
console.log('π con 4 decimales:', Math.PI.toFixed(4));

Math.random() genera números pseudoaleatorios, no criptográficamente seguros. Para aplicaciones de seguridad (como generar contraseñas o tokens), usa crypto.getRandomValues().

Un patrón común para generar enteros aleatorios en un rango:

function aleatorioEntre(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(aleatorioEntre(1, 10)); // número entre 1 y 10