Así que me encontré con un problema "¿Cómo revertir un número entero en javascript?" Logré invertir con éxito los números positivos, por ejemplo, si ingreso 123, obtengo el resultado 321, pero por otro lado, si intento algún número negativo como -123, obtengo 0 como resultado. ¿Cómo puedo resolver este problema y obtener una salida como -321?
var reverse = function(x){ let a = 0; while(x>0){ a = a * 10 + x%10; // 0 = 0 *10 + 123%10 = 3 // a=3 // 0 = 0 *10 + 12%10 = 2 // a=2 // 0 = 0*10 + 1%10 = 1 // a=1 x = Math.floor(x/10) // x = 123/10 = 12 // x = 12/10 =1 } console.log(a); return a; } var x = -123; reverse(x)Simplemente conserva el signo de un número entero, como
var reverse = function(x){ let sign = x<0?-1:1; let a = 0; x=Math.abs(x); while(x>0){ a = a * 10 + x%10; // 0 = 0 *10 + 123%10 = 3 // a=3 // 0 = 0 *10 + 12%10 = 2 // a=2 // 0 = 0*10 + 1%10 = 1 // a=1 x = Math.floor(x/10) // x = 123/10 = 12 // x = 12/10 =1 } console.log(sign*a); return a; } var x = -123; reverse(x)Convierta un entero negativo en positivo multiplicando con -1, luego invierta y luego vuelva a convertirlo en negativo
var reverse = function(x){ let isNegative=x<0; x=Math.abs(x); let a = 0; while(x>0){ a = a * 10 + x%10; // 0 = 0 *10 + 123%10 = 3 // a=3 // 0 = 0 *10 + 12%10 = 2 // a=2 // 0 = 0*10 + 1%10 = 1 // a=1 x = Math.floor(x/10) // x = 123/10 = 12 // x = 12/10 =1 } console.log(a); return isNegative ? a* -1 : a; } let reverse = function(x){ let a = 0; while(true){ a = a * 10 + x%10; // 0 = 0 *10 + 123%10 = 3 // a=3 // 0 = 0 *10 + 12%10 = 2 // a=2 // 0 = 0*10 + 1%10 = 1 // a=1 x = x > 0 ? Math.floor(x/10) : Math.ceil(x/10); // x = 123/10 = 12 // x = 12/10 =1 if(x === 0){ break; } } console.log(a); return a; } let x = -123; reverse(x);Matemáticas.piso(10.5); Salida de consola: 10
Matemáticas.piso(-10.5); Salida de la consola: -11
Se incorporó la lógica usando la función Math.ceil() cuando el número es menor que cero.