Existe uma função matemática no JavaScript que converte números em valor positivo?
javascript
Dave
fonte
fonte
var x = -100; ~x+1 === 100
masvar x = 100; ~x+1 === -100
.Math.abs
sempre o torna positivo, enquanto o complemento simplesmente inverte o sinal.Que tal
x *= -1
? Eu gosto da sua simplicidade.fonte
x
será invertido. Sex = 23
e for inserido nessa equação,x
será igual-23
. Nas palavras do Sr. Escalante, "Um positivo vezes que um negativo é igual a um negativo. Um negativo vezes que um negativo é igual a um positivo". ... "Como eu alcanço esses kiiiiiiids ?!"x=23
, então se tornará -23. Conforme a pergunta, 'Converta um número negativo para um número positivo em JS', mas o acima irá inverter qualquer número, seja ele positivo ou negativo.x
sempre ser positiva. Minhas desculpas @myusuf.Math.abs(x)
ou se você está certo o valor é negativo antes da conversão apenas prefixar um sinal de menos regulares:x = -x
.fonte
O sinal de menos (-) pode converter números positivos em números negativos e números negativos em números positivos.
x=-y
é açúcar visual parax=(y*-1)
.fonte
fonte
Acho esta solução fácil de entender.
fonte
Se você gostaria de escrever um código interessante que ninguém mais possa atualizar, tente o seguinte:
~ --x
fonte
~
operador converte o número em um número inteiro de 32 bits. Se você tiver um flutuador como entrada, ele será mangueira.Eu sei que isso é um pouco tarde, mas para as pessoas que lutam com isso, você pode usar as seguintes funções:
Torne qualquer número positivo
Torne qualquer número negativo
Inverter qualquer número
fonte
Negativo para positivo
Positivo para negativo
fonte
Multiplicar por (-1) é a maneira mais rápida de converter números negativos em positivos. Mas você deve ter cuidado para não converter meu erro em um número positivo em negativo! Portanto, é necessária uma verificação adicional ...
Então Math.abs, Math.floor e parseInt são os mais lentos.
https://jsperf.com/test-parseint-and-math-floor-and-mathabs/1
fonte
Eu fiz algo assim sozinho.
Ele verifica se o número é negativo e, se for, multiplique por -1. Isso retorna um valor, depende de você se você o capturar. Caso você queira atribuí-lo a algo, você provavelmente deve fazer algo como:
Mas isso realmente depende do seu objetivo. Para mim, era simples, faça positivo se negativo, caso contrário não faça nada. Daí o '' no código. Neste caso, usei o operador terciário, porque eu queria, poderia muito bem ser:
Eu vi a solução bit a bit aqui e queria comentar sobre essa também.
Este soultion é muito chique na minha opinião, poderíamos reescrevê-lo assim:
Em termos simples, pegamos o número negativo, tiramos um número e depois o invertemos bit a bit. Se o tivéssemos invertido normalmente, teríamos um valor 1 muito pequeno. Você também pode fazer isso:
Isso fará o mesmo, mas inverterá primeiro e depois adicionará 1 ao número positivo. Embora você não possa fazer isso:
Isso não funcionará por causa da precedência , operadores de postfix como
num++
seriam avaliados antes de ~ e o prefixo do motivo++num
não funcionaria, mesmo que esteja na mesma precedência que NOT (~) bit a bit, porque é avaliado da direita para a esquerda. Eu tentei trocá-los, mas parece que o prefixo é um pouco exigente em comparação com o NOT bit a bit. O +1 funcionará porque '+' tem uma precedência mais alta e será avaliado posteriormente.Achei a solução bastante divertida e decidi expandi-la, pois era lançada lá e postar pessoas que a observavam provavelmente a estavam ignorando. Embora sim, ele não funciona com carros alegóricos.
Minha esperança é que este post não se afaste da pergunta original. : /
fonte
Minha abordagem mínima
Para converter número negativo em positivo e vice-versa
fonte
Você pode usar o operador ~ que converte logicamente o número em negativo e adiciona 1 ao negativo:
fonte
Eu conheço outra maneira de fazer isso. Esta técnica funciona de negativo para positivo e vice-versa
Vice-versa:
CÓDIGO AO VIVO:
fonte
Para uma programação funcional, o Ramda possui um ótimo método para isso. O mesmo método funciona passando de positivo para negativo e vice-versa.
https://ramdajs.com/docs/#negate
fonte
Se você deseja que o número seja sempre positivo, não importa o que você possa fazer.
Você também pode tentar isso, mas eu não recomendo:
O problema disso é que você pode alterar o número para negativo, converter para string e remover o - da string e, em seguida, converter novamente para int. O que eu acho que levaria mais processamento do que apenas usar a outra função.
Eu testei isso em php e a primeira função é mais rápida, mas às vezes JS faz algumas coisas loucas, então não posso dizer com certeza.
fonte
n*-n
deveria sern*-1
. Eu removeria o exemplo por completo, já que as conversões de tipo e chamada de método são muito ineficientes em comparação com a simplicidade do primeiro exemplo. Até a peculiaridade de JS não pode ajudar aqui