En este capítulo estamos trabajando con números y fechas, los ejercicios que vamos a hacer son los siguientes.
1. Conversión de números de base binaria a decimal
Vamos a crear una función que convierta números de base binaria a decimal y viceversa.
const convertirBinarioDecimal = (
numero = undefined,
base = undefined
) => {
if (numero === undefined)
return console.log("No ingresaste el número a convertir");
if (typeof numero !== "number")
return console.log("El parámetro número tiene que ser un número");
if (base === undefined) return console.log("No ingresaste una base");
if (typeof base !== "number")
return console.log("La base ingresada no es un número");
if (base === 2) {
return console.log(
`${numero} base ${base} = ${parseInt(numero, base)} base 10`
);
} else if (base === 10) {
return console.log(
`${numero} base ${base} = ${numero.toString(2)} base 2`
);
} else {
return console.log("El tipo de base a convertir no es válido");
}
};
convertirBinarioDecimal();
convertirBinarioDecimal(100, 2);
convertirBinarioDecimal(4, 10);
convertirBinarioDecimal(4, 100);
2. Monto final
Vamos a programar una función que devuelva el monto final después de aplicar descuento a una cantidad dada.
const aplicarDescuento = (monto = undefined, descuento = 0) => {
if (monto === undefined) return console.log("No ingresaste el monto");
if (typeof monto !== "number")
return console.log("No ingresaste un número");
if (monto === 0) return console.log("El monto no puede ser cero");
if (Math.sign(monto) === -1)
return console.log("El monto no puede ser negativo");
if (typeof descuento !== "number")
return console.log("El descuento no es un número");
if (Math.sign(descuento) === -1)
return console.log("El descuento no puede ser negativo");
return console.log(
`${monto} - ${descuento}% = ${monto - (monto * descuento) / 100}`
);
};
,
aplicarDescuento(100, 10);
aplicarDescuento(100, 100);
aplicarDescuento(100, 20);
3. Cuantos años han pasado
Vamos a programar una función que, dada una fecha válida,determine cuantos años han pasado hasta el día de hoy. Para este ejercicio vamos a utilizar el formato timestamp, que significa cuantos milisegundos han pasado del 1 de enero de 1970 hasta ahora. Lo que interesaría sería convertir ambas fechas a valores timestamp, hacer la operación aritmética que tengamos que hacer, y esto, nuevamente volverlo a convertir a la unidad de tiempo que necesitemos nuevamente (segundos, horas…).
const calcularAnios = (fecha = undefined) => {
if (fecha === undefined) return console.log("No mandaste la fecha");
if (!(fecha instanceof Date))
return console.log("El valor que ingresaste no es una fecha válida");
// Variable expresada en milisegundos
let hoyMenosFecha = new Date().getTime() - fecha.getTime();
// Transformación de milisegundos a una fecha entendible
let aniosEnMilisegundos = 1000 * 60 * 60 * 24 * 365;
let aniosHumanos = Math.floor(hoyMenosFecha / aniosEnMilisegundos);
return Math.sign(aniosHumanos) === -1
? console.log(
`Faltan ${Math.abs(
aniosHumanos
)} años para el ${fecha.getFullYear()}`
)
: Math.sign(aniosHumanos) === 1
? console.log(
`Han pasado ${aniosHumanos} años desde ${fecha.getFullYear()}`
)
: console.log(`Estamos en el año actual: ${fecha.getFullYear()}`);
};
calcularAnios(new Date());
calcularAnios(new Date(1972, 2, 14));
calcularAnios(new Date(1872, 2, 14));
calcularAnios(new Date(2050, 2, 14));
