Lección 13: Números y el Objeto Math
🧠 Concepto
Section titled “🧠 Concepto”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.
Números decimales y precisión
Section titled “Números decimales y precisión”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)El objeto Math
Section titled “El objeto Math”Constantes:
console.log(Math.PI); // 3.141592653589793console.log(Math.E); // 2.718281828459045Redondeo:
console.log(Math.round(4.7)); // 5 (redondeo normal)console.log(Math.round(4.3)); // 4console.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)); // 20console.log(Math.min(10, 5, 20, 8)); // 5console.log(Math.abs(-42)); // 42console.log(Math.pow(2, 3)); // 8 (2³)console.log(Math.sqrt(16)); // 4💻 Ejemplo
Section titled “💻 Ejemplo”// Sistema de calificacioneslet 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 formateolet precio = 123.4567;console.log('Precio:', precio.toFixed(2)); // "123.46"
// Calcular área de un círculolet radio = 5;let area = Math.PI * Math.pow(radio, 2);console.log(`Área del círculo con radio ${radio}: ${area.toFixed(2)}`);📝 Ejercicio
Section titled “📝 Ejercicio”- Crea un archivo
numeros-math.js. - Genera un número aleatorio entre 1 y 100.
- Redondea hacia abajo, hacia arriba y normal.
- Calcula la raíz cuadrada y la potencia al cubo de un número.
- Encuentra el número mayor y el menor de una lista.
- 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));⚠️ Nota
Section titled “⚠️ Nota”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