¿Existe una función matemática en JavaScript que convierta los números a valor positivo?
javascript
Dave
fuente
fuente
var x = -100; ~x+1 === 100
perovar x = 100; ~x+1 === -100
.Math.abs
siempre lo hace positivo mientras toma el complemento unos, simplemente invierte el signo.¿Qué hay de
x *= -1
? Me gusta su simplicidad.fuente
x
será volteado. Six = 23
y se empuja en esa ecuación,x
será igual-23
. En palabras del Sr. Escalante, "Un positivo por un negativo es igual a un negativo. Un negativo por un negativo es igual a un positivo". ... "¿Cómo llego a estos kiiiiiiids ?!"x=23
, entonces se convertirá en -23. Como dice la pregunta, 'Convierta un número negativo en un número positivo en JS', pero lo anterior cambiará cualquier número, ya sea positivo o negativo.x
siempre sea positivo. Mis disculpas @myusuf.Math.abs(x)
o si no está determinado el valor es negativo antes de la conversión simplemente escriba un signo menos regulares:x = -x
.fuente
El signo menos (-) puede convertir números positivos en números negativos y números negativos en números positivos.
x=-y
es azúcar visual parax=(y*-1)
.fuente
fuente
Encuentro esta solución fácil de entender.
fuente
Si desea escribir un código interesante que nadie más pueda actualizar, intente esto:
~ --x
fuente
~
operador convierte el número a un entero de 32 bits. Si tiene un flotador como entrada, se manguera.Sé que esto es un poco tarde, pero para las personas que luchan con esto, pueden usar las siguientes funciones:
Convierte cualquier número positivo
Convertir cualquier número negativo
Invierte cualquier número
fuente
Negativo a positivo
Positivo a negativo
fuente
Multiplicar por (-1) es la forma más rápida de convertir un número negativo en positivo. ¡Pero debes tener cuidado de no convertir mi error en un número positivo a negativo! Por lo tanto, se necesita un control adicional ...
Entonces Math.abs, Math.floor y parseInt es el más lento.
https://jsperf.com/test-parseint-and-math-floor-and-mathabs/1
fuente
Hice algo como esto yo mismo.
Comprueba si el número es negativo y si lo es, multiplícalo por -1. Esto devuelve un valor, depende de ti si lo capturas. En caso de que desee asignarlo a algo, probablemente debería hacer algo como:
Pero realmente depende de cuál es tu objetivo. Para mí fue simple, hacerlo positivo si es negativo, de lo contrario no hacer nada. De ahí el '' en el código. En este caso, utilicé el operador terciario porque quería, podría muy bien ser:
Vi la solución bit a bit aquí y quería comentar sobre eso también.
Esta idea es muy elegante en mi opinión, podríamos reescribirla así:
En términos simples, tomamos el número negativo, le quitamos uno y luego lo invertimos bit a bit. Si lo hubiéramos invertido a nivel de bits, normalmente obtendríamos un valor 1 demasiado pequeño. También puedes hacer esto:
Eso hará lo mismo pero invertirá primero y luego sumará 1 al número positivo. Aunque NO PUEDES hacer esto:
Eso no funcionará por causa de precedencia , los operadores de postfix como
num++
se evaluarían antes de ~ y el prefijo de razón++num
no funcionaría aunque tenga la misma precedencia que NO a nivel de bit (~), es porque se evalúa de derecha a izquierda. Intenté intercambiarlos, pero parece que el prefijo es un poco complicado en comparación con NO a nivel de bits. El +1 funcionará porque '+' tiene una prioridad más alta y se evaluará más adelante.Encontré que la solución era bastante divertida y decidí ampliarla, ya que se la arrojó allí y las personas que la miraron probablemente la ignoraron. Aunque sí, no funcionará con carrozas.
Espero que esta publicación no se haya alejado de la pregunta original. : /
fuente
Mi enfoque minimo
Para convertir un número negativo a positivo y viceversa
fuente
Puede usar el operador ~ que convierte lógicamente el número a negativo y agrega 1 al negativo:
fuente
Sé otra forma de hacerlo. Esta técnica funciona de negativo a positivo y viceversa.
Viceversa:
CÓDIGO EN VIVO
fuente
Para una programación funcional, Ramda tiene un buen método para esto. El mismo método funciona yendo de positivo a negativo y viceversa.
https://ramdajs.com/docs/#negate
fuente
Si desea que el número sea siempre positivo, no importa lo que pueda hacer.
También puedes probar esto, pero no lo recomiendo:
El problema con esto es que podría cambiar el número a negativo, luego convertirlo en una cadena y eliminar el - de la cadena, y luego volver a convertirlo en int. Lo cual supongo que requeriría más procesamiento que simplemente usar la otra función.
He probado esto en php y la primera función es más rápida, pero a veces JS hace algunas locuras, por lo que no puedo decir con certeza.
fuente
n*-n
debería sern*-1
. Sin embargo, eliminaría el ejemplo por completo, ya que las conversiones de tipo y la llamada al método son muy ineficientes en comparación con la simplicidad del primer ejemplo. Incluso la peculiaridad de JS no puede ayudar aquí