This script multiplies three numbers.

This algorithm multiplies three floating-point numbers with high precision.
Project Stack: JavaScript.

function validarMonto(valorEsperado, valor1, valor2, valor3) {
  const numbersParam = [valor1, valor2, valor3];

  // Paso 1: separar parte entera y decimal
  const dataNumbers = numbersParam.map(num => {
    const [intPart, decPart = ""] = String(num).trim().split(".");
    const numberInt = BigInt((intPart + decPart) || "0");
    return { numberInt, decimals: decPart.length };
  });

  // Paso 2: multiplicar todos los enteros
  const totalMultiplicationInt = dataNumbers.reduce(
    (accumulatedProduct, listNumbers) => accumulatedProduct * listNumbers.numberInt,
    BigInt(1)
  );

  // Paso 3: sumar todos los decimales
  const totalDecimals = dataNumbers.reduce(
    (accumulatedSum, listNumbers) => accumulatedSum + listNumbers.decimals,
    0
  );

  // Paso 4: reconstruir el resultado con punto decimal
  const resultStr = totalMultiplicationInt.toString();
  const pointPosition = resultStr.length - totalDecimals;
  let resultToMultiplication;

  if (pointPosition > 0) {
    resultToMultiplication =
      resultStr.slice(0, pointPosition) + "." + resultStr.slice(pointPosition);
  } else {
    resultToMultiplication =
      "0." + "0".repeat(-pointPosition) + resultStr;
  }

  // Paso 5: eliminar ceros extra al final
  resultToMultiplication = resultToMultiplication.replace(/\.?0+$/, "");

  return ("Resultado: " + resultToMultiplication + " Valor esperado: " + valorEsperado);
}

// Ejemplo de uso:
console.log(validarMonto(1250 * 18.4639 * 1.1582, "1250", "18.4639", "1.1582"));