13. Porcentajes y variaciones porcentuales

Los porcentajes expresan razones sobre 100. Se usan para descuentos, impuestos, intereses, estadísticas, indicadores, reportes y comparaciones de crecimiento o disminución.

13.1 Introducción

Un porcentaje es una forma de expresar una proporción usando 100 como referencia. Decir 25% significa 25 de cada 100, o también 25/100, que equivale a 0.25.

En programación, los porcentajes aparecen en descuentos, impuestos, barras de progreso, métricas de conversión, variaciones de precios, intereses, reportes y análisis de datos.

La clave es recordar que para calcular con porcentajes normalmente los convertimos a decimal dividiendo por 100.

13.2 Qué significa un porcentaje

Un porcentaje compara una parte con un total y expresa esa relación sobre 100.

40% = 40/100 = 0.40
const porcentaje = 40;
const decimal = porcentaje / 100;

console.log(decimal);

El valor decimal es el que se usa normalmente para multiplicar y calcular la parte correspondiente.

13.3 Porcentaje, fracción y decimal

Porcentaje, fracción y decimal son tres formas de representar una misma relación.

Porcentaje Fracción Decimal
10% 10/100 0.10
25% 25/100 0.25
50% 50/100 0.50
100% 100/100 1
console.log(10 / 100);
console.log(25 / 100);
console.log(50 / 100);
console.log(100 / 100);

13.4 Calcular el porcentaje de un número

Para calcular un porcentaje de una cantidad, multiplicamos la cantidad por el porcentaje convertido a decimal.

parte = total × porcentaje / 100
const total = 800;
const porcentaje = 15;
const parte = total * porcentaje / 100;

console.log(parte);

El resultado indica cuánto representa el 15% de 800.

13.5 Calcular qué porcentaje representa una parte

Si conocemos una parte y el total, podemos calcular qué porcentaje representa esa parte.

porcentaje = parte / total × 100
const completados = 45;
const total = 60;
const porcentaje = completados / total * 100;

console.log(porcentaje);

Este cálculo es común en barras de progreso, métricas de tareas completadas y reportes.

13.6 Descuentos

Un descuento reduce un valor inicial. Primero calculamos el monto descontado y luego lo restamos del precio original.

precioFinal = precioOriginal - precioOriginal × descuento / 100
const precioOriginal = 1200;
const descuento = 20;

const montoDescuento = precioOriginal * descuento / 100;
const precioFinal = precioOriginal - montoDescuento;

console.log(montoDescuento);
console.log(precioFinal);

13.7 Aumentos

Un aumento incrementa un valor inicial. Primero calculamos el monto del aumento y luego lo sumamos al valor original.

valorFinal = valorInicial + valorInicial × aumento / 100
const sueldo = 300000;
const aumento = 12;

const montoAumento = sueldo * aumento / 100;
const sueldoFinal = sueldo + montoAumento;

console.log(montoAumento);
console.log(sueldoFinal);

13.8 Factor multiplicador

Otra forma de aplicar aumentos o descuentos es usar un factor multiplicador. Para aumentar 20%, multiplicamos por 1.20. Para descontar 20%, multiplicamos por 0.80.

Operación Porcentaje Factor
Aumentar 10% 1.10
Aumentar 25% 1.25
Descontar 10% 0.90
Descontar 25% 0.75
const precio = 1000;

console.log(precio * 1.20);
console.log(precio * 0.80);

13.9 Variación porcentual

La variación porcentual indica cuánto cambió un valor respecto de un valor inicial.

variación porcentual = (valorFinal - valorInicial) / valorInicial × 100
const valorInicial = 200;
const valorFinal = 250;

const variacion = (valorFinal - valorInicial) / valorInicial * 100;

console.log(variacion);

El resultado positivo indica crecimiento. Un resultado negativo indica disminución.

13.10 Disminución porcentual

Si el valor final es menor que el inicial, la variación porcentual será negativa.

const valorInicial = 500;
const valorFinal = 425;

const variacion = (valorFinal - valorInicial) / valorInicial * 100;

console.log(variacion);

Podemos mostrar el valor absoluto si queremos comunicar la disminución como porcentaje positivo.

const variacion = -15;

console.log(Math.abs(variacion));

13.11 Porcentaje inverso

A veces conocemos el valor final después de un aumento o descuento y queremos recuperar el valor original. Para eso dividimos por el factor aplicado.

Si 1200 es el precio después de aumentar 20%, entonces:
precioOriginal = 1200 / 1.20
const precioFinal = 1200;
const aumento = 20;
const factor = 1 + aumento / 100;
const precioOriginal = precioFinal / factor;

console.log(precioOriginal);

Este cálculo es importante porque restar 20% a un valor aumentado 20% no vuelve al valor original.

13.12 Aumentar y luego descontar no siempre vuelve al inicio

Si aumentamos 20% y luego descontamos 20%, no regresamos al valor inicial, porque el descuento se aplica sobre un valor más grande.

const inicial = 1000;
const aumentado = inicial * 1.20;
const luegoDescontado = aumentado * 0.80;

console.log(aumentado);
console.log(luegoDescontado);

Los porcentajes dependen siempre de la base sobre la que se aplican.

13.13 Aplicación: barra de progreso

Una barra de progreso muestra qué porcentaje de una tarea fue completado.

const pasosCompletados = 7;
const pasosTotales = 10;
const progreso = pasosCompletados / pasosTotales * 100;

console.log(progreso.toFixed(0) + "%");

El porcentaje permite comunicar visualmente el avance de forma simple.

13.14 Aplicación: impuesto o recargo

Muchos sistemas calculan impuestos, recargos o comisiones como porcentajes sobre un importe base.

const subtotal = 5000;
const impuesto = 21;

const montoImpuesto = subtotal * impuesto / 100;
const total = subtotal + montoImpuesto;

console.log(montoImpuesto);
console.log(total);

En aplicaciones financieras reales se debe prestar atención al redondeo y a las reglas legales de cada caso.

13.15 Errores comunes

  • Usar 20 como factor en lugar de 0.20 para representar 20%.
  • Olvidar que el porcentaje se aplica sobre una base específica.
  • Creer que aumentar 20% y descontar 20% devuelve siempre al valor inicial.
  • Dividir por cero al calcular qué porcentaje representa una parte.
  • Confundir variación porcentual con diferencia absoluta.
const inicial = 100;
const final = 130;

const diferenciaAbsoluta = final - inicial;
const variacionPorcentual = (final - inicial) / inicial * 100;

console.log(diferenciaAbsoluta);
console.log(variacionPorcentual);

13.16 Qué debes recordar de este tema

  • Un porcentaje expresa una razón sobre 100.
  • Para calcular con porcentajes, normalmente se divide por 100.
  • El porcentaje de una cantidad se calcula como cantidad × porcentaje / 100.
  • Los descuentos restan una parte del valor original.
  • Los aumentos suman una parte al valor original.
  • La variación porcentual compara un valor final con un valor inicial.
  • Los porcentajes siempre dependen de la base sobre la que se aplican.

13.17 Conclusión

Los porcentajes son una aplicación directa de razones y proporciones. Permiten expresar partes, avances, aumentos, descuentos y cambios de forma comprensible para usuarios y sistemas.

En el próximo tema estudiaremos regla de tres simple y compuesta, una herramienta muy útil para resolver problemas proporcionales.