Ruby: Mudar número negativo para número positivo?


105

Qual é a maneira mais simples de transformar um número negativo em positivo com o rubi?

ie. Altere "-300" para "300"

Respostas:


268

Usar absretornará o valor absoluto de um número

-300.abs  # 300
300.abs   # 300

3
minha resposta é apenas para números negativos, se você precisa sempre ter o valor absoluto, esta é definitivamente a melhor maneira.
Brandon Bodnar

27

Coloque um sinal negativo na frente dele.

>> --300
=> 300
>> x = -300
=> -300
>> -x
=> 300

6
Observe que, se o número já for positivo, ele será negativo.
Sasha Chedygov

Sim. Esclarecido que em meu comentário à resposta aceita acima.
Brandon Bodnar

8
ou não é gênio ou não é loucura.
Stephen Nguyen

porque votos negativos? isso torna-se negativo em positivo conforme a OP perguntou. #abse -são recursos diferentes com o mesmo comportamento para entradas / saídas solicitadas. Se for por causa de um indesejável +-> -, não é mais do que uma suposição, já que isso não foi coberto pelo OP.
André Figueiredo

15

Não seria mais fácil multiplicar por um negativo?

x * -1

Dessa forma, você pode ir e voltar.


Eu gosto de usar isso para maior clareza, já que usar o sinal - às vezes pode ser fácil de perder
Matthias

1
Vale a pena lembrar que você pode usar a abreviatura x *= -1se quiser armazenar o novo valor ...
SRack

Com base no mesmo princípio, podemos até dividir qualquer número negativo por -1. No entanto, eu estava me perguntando qual pode ser a vantagem de usá-lo sobre o método de abs, conforme mencionado por Yacoby
Apurva

1
abs retorna um valor absoluto. Se isso é tudo que você quer, como o OP faz, tudo bem. Mas e se você precisar ir e voltar?
absynthe minded web smith

@ApurvaMayank qual é a vantagem de usar abssobre isso? OP não mencionou, mas ele também pode transformar o positivo em negativo ou mantê-lo positivo ... você não pode assumir um sem que isso seja mencionado.
André Figueiredo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.