El usuario ingresa 110 en la cantidad, pero como hay 20 piezas en la multiplicidad, la cantidad debe volver a calcularse automáticamente hacia arriba, debe ser de 120 piezas.
Si, por ejemplo, la multiplicidad es 100 y el cliente necesita 1010 piezas, e introduce 1010 piezas en el campo de cantidad, se debe volver a calcular a 1100 piezas.
Necesito redondear dependiendo de la multiplicidad de bienes.
curValue = Math.floor(Math.ceil((curValue * this.precisionFactor )/this.precisionFactor))Creo que la forma más sencilla de lograr esto es ver primero cuántos 'lotes' de multiplicidad de tamaño hay, redondeando esto al número entero más cercano y luego multiplicándolo nuevamente por la multiplicidad. Eso es
function multRound(amount, batchSize) { // round up to whole number of batches let numBatches = Math.ceil(amount/batchSize); // return the number times the size of each let total = numBatches * batchSize; return total; }Por supuesto, puede hacer que esto sea sencillo, pero pensé que sería más claro escribirlo así.
var curValue = 105; var multiplicity = 20; var amountToAdd = 0; for (var i = curValue; i >= multiplicity; i = i - multiplicity ) { var temp = i - multiplicity; amountToAdd = multiplicity - temp; } console.log("new value: " + (curValue + amountToAdd))Puede dividir el valor por multiplicidad y obtener la parte entera usando Math.floor() y agregarle 1 (ya que desea que se redondee). Luego devuelva este valor multiplicado por la multiplicidad.
function round(currValue, multi){ return multi*(Math.floor(currValue/multi) + 1); } console.log(round(105, 20)); console.log(round(1010, 100));