Los programas financieros necesitan calcular precios, descuentos, impuestos, intereses, cuotas y saldos con precisión. La matemática financiera básica ayuda a modelar esas reglas correctamente.
Muchas aplicaciones trabajan con dinero: tiendas online, sistemas de facturación, billeteras digitales, bancos, presupuestos, suscripciones y reportes contables.
Estos cálculos parecen simples, pero requieren cuidado: porcentajes, redondeos, impuestos, descuentos, cuotas, intereses y precisión numérica pueden afectar el resultado final.
Este tema presenta conceptos básicos para programar cálculos financieros simples con JavaScript.
El capital es el dinero inicial. El interés es el dinero adicional generado o cobrado por el uso del capital. El monto es el capital más los intereses.
const capital = 10000;
const interes = 1500;
const monto = capital + interes;
console.log(monto);
Muchos cálculos financieros usan porcentajes. Para calcular un porcentaje de un importe, multiplicamos por el porcentaje dividido por 100.
const importe = 5000;
const porcentaje = 12;
const resultado = importe * porcentaje / 100;
console.log(resultado);
Un descuento reduce el precio original. Primero calculamos el monto del descuento y luego lo restamos.
const precio = 12000;
const descuento = 15;
const montoDescuento = precio * descuento / 100;
const precioFinal = precio - montoDescuento;
console.log(montoDescuento);
console.log(precioFinal);
También podemos usar un factor: descontar 15% equivale a multiplicar por 0.85.
Un impuesto o recargo aumenta el importe base. Se calcula como porcentaje del subtotal.
const subtotal = 10000;
const impuesto = 21;
const montoImpuesto = subtotal * impuesto / 100;
const total = subtotal + montoImpuesto;
console.log(montoImpuesto);
console.log(total);
En sistemas reales, el orden de aplicación de descuentos e impuestos puede depender de reglas legales o comerciales.
Un cálculo frecuente combina descuento e impuesto. Conviene separarlo en pasos para evitar errores.
function calcularPrecioFinal(precio, descuento, impuesto) {
const precioConDescuento = precio - precio * descuento / 100;
const total = precioConDescuento + precioConDescuento * impuesto / 100;
return total;
}
console.log(calcularPrecioFinal(10000, 10, 21));
Si dividimos un total en cuotas iguales sin interés, cada cuota se calcula dividiendo el total por la cantidad de cuotas.
const total = 24000;
const cuotas = 6;
const valorCuota = total / cuotas;
console.log(valorCuota);
Si el resultado tiene decimales, hay que decidir cómo redondear y cómo ajustar diferencias.
Si una compra en cuotas tiene recargo, primero calculamos el total con recargo y luego lo dividimos por la cantidad de cuotas.
const precio = 30000;
const recargo = 18;
const cuotas = 12;
const totalConRecargo = precio + precio * recargo / 100;
const valorCuota = totalConRecargo / cuotas;
console.log(totalConRecargo);
console.log(valorCuota);
Para evitar muchos problemas de precisión decimal, es común guardar importes en centavos como enteros.
const precioCentavos = 1999;
const cantidad = 3;
const totalCentavos = precioCentavos * cantidad;
console.log(totalCentavos);
console.log((totalCentavos / 100).toFixed(2));
Esta técnica es útil para sumas, restas y multiplicaciones simples.
Para mostrar importes al usuario, conviene usar formato monetario. Intl.NumberFormat permite adaptar separadores y moneda.
const importe = 123456.78;
const formato = new Intl.NumberFormat("es-AR", {
style: "currency",
currency: "ARS"
});
console.log(formato.format(importe));
El formato afecta la presentación, no cambia el valor usado para calcular.
Un flujo de caja registra entradas y salidas de dinero. El saldo se obtiene sumando ingresos y restando egresos.
const movimientos = [5000, -1200, -800, 3000, -600];
const saldo = movimientos.reduce((total, movimiento) => total + movimiento, 0);
console.log(saldo);
Los valores positivos representan ingresos y los negativos egresos.
El margen compara la ganancia con el precio de venta. Es una razón expresada como porcentaje.
const costo = 7000;
const precioVenta = 10000;
const margen = (precioVenta - costo) / precioVenta * 100;
console.log(margen);
El punto de equilibrio indica cuántas unidades hay que vender para cubrir un costo fijo.
const costoFijo = 50000;
const precioVenta = 3000;
const costoUnitario = 1800;
const gananciaPorUnidad = precioVenta - costoUnitario;
const unidades = Math.ceil(costoFijo / gananciaPorUnidad);
console.log(unidades);
Usamos Math.ceil() porque no podemos vender una fracción de unidad si el producto es indivisible.
const precio = 1000;
const descuento = 10;
const incorrecto = precio - precio * descuento;
const correcto = precio - precio * descuento / 100;
console.log(incorrecto);
console.log(correcto);
La matemática financiera básica permite implementar cálculos monetarios cotidianos de forma clara. Al programar, es importante separar reglas, validar datos y manejar el redondeo con criterio.
En el próximo tema estudiaremos interés simple e interés compuesto con más detalle.