para el contexto aquí está mi problema:
Tengo una tabla de piezas. Una pieza se produce a partir de un conjunto de materiales, llamemos a la variable constante de materiales z. Así que esta tabla es una tabla de piezas todas producidas a partir de un conjunto de materiales. Cada fila de esta tabla es una parte nueva. También hay una columna que indica la cantidad de piezas que se producirán a partir de 1 conjunto de materiales.
Entonces si tengo:
var z = 1 //just some constant var x = 5 //the amount of parts produced from a single set of materials var y = 23 //the total amount of parts that have to be made
Sé la cantidad de piezas producidas a partir de un conjunto de materiales y sé la cantidad de piezas que se deben producir. Nunca puedo producir menos piezas de las que se necesitan, así que sé que 4 conjuntos de materiales me producirán 20 piezas y todavía me faltarían 3. Si uso 5 juegos de materiales puedo producir 25 partes con un resto de 2 partes.
Mi problema es que traté de resolver esto usando mod, pero estoy cometiendo un error en alguna parte
//Fun const fun = async () => { try { let x = 23; let y = 5; const result = x/y if(x%y == 0) { console.log(x, ' divided by', y, ' has remainder of: ', x%y); console.log(y, ' divided by', x, ' has remainder of: ', y%x); } else { console.log(x, ' divided by', y, ' has remainder of: ', x%y); console.log(y, ' divided by', x, ' has remainder of: ', y%x); } } catch (err) { console.log(err.message); } }
Entonces, para agregar más claridad, siempre querría encontrar la cantidad máxima de veces que un número se puede dividir por algo, y si tiene un resto, registrar el resto. ¿Sería una posible solución distinguir entre residuos positivos o negativos? Cualquier ayuda se agradece, gracias !!!
Math.floor( A/B )
, donde A es el número deseado y B es la cantidad de piezas en un conjunto, le dará la cantidad de divisiones antes del resto (ya que una división es solo la cantidad de veces que B se puede restar de A, luego usamos Math.floor para redondear hacia abajo), (A%B)
le dará el resto a partir de entonces.
Si quieres ver cuántas veces se puede dividir X por Y, hazlo
yz =x
z*log(y) = log(x)
z = registro (x)/registro (y)
y desde aquí puede usar Floor(z) o ceil(z) dependiendo de su problema.
Probablemente esto no sea lo que está buscando, pero es una forma abreviada de llegar a donde se dirige.
const fun = (x, y) => { let r = x % y; // store our modulus here return !r ? [x, 0] : [(y - r + x), y - r]; // if there is no remainder, return the dividend and zero: x, 0 // otherwise, the next whole number result is found by // subtracting the modulus from the divisor and adding the dividend: (y - r + x) // and the difference between the new divisor and the old divisor is the divisor minus the modulus: (y - r) }
Lo tengo regresando en una matriz, pero puede convertirlo fácilmente en su formato de cadena con join(',')
const fun = (x, y) => { let r = x % y; return !r ? [x, 0] : [(y - r + x), y - r]; } console.log(fun(23, 5)) console.log(fun(33, 2))