Ruby: cambiare numero negativo in numero positivo?


105

Qual è il modo più semplice per cambiare un numero negativo in positivo con il rubino?

vale a dire. Cambia "-300" in "300"

Risposte:


268

L'utilizzo absrestituirà il valore assoluto di un numero

-300.abs  # 300
300.abs   # 300

3
la mia risposta è solo per i numeri negativi, se hai bisogno di avere sempre il valore assoluto allora questo è sicuramente il modo migliore.
Brandon Bodnar

27

Metti un segno negativo davanti.

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

6
Tieni presente che se il numero è già positivo, lo renderà negativo.
Sasha Chedygov

Si. Chiarito che nel mio commento alla risposta sopra accettata.
Brandon Bodnar

8
non è geniale o non è follia.
Stephen Nguyen

perché voti negativi? questo diventa negativo in positivo come richiesto da OP. #abse -sono caratteristiche diverse con lo stesso comportamento per l'input / output richiesto. Se è a causa di un +-> indesiderabile -, non è altro che un presupposto, poiché non era coperto da OP.
Andre Figueiredo

15

Non sarebbe più semplice moltiplicarlo per negativo?

x * -1

In questo modo puoi andare avanti e indietro.


Mi piace usarlo per chiarezza, poiché l'uso del segno - a volte può essere facile non
vederlo

1
Vale la pena ricordare che puoi usare la stenografia x *= -1se stai cercando di memorizzare il nuovo valore ...
SRack

In base allo stesso principio possiamo anche dividere l'eventuale numero negativo per -1. Tuttavia, mi stavo solo chiedendo quale può essere il vantaggio di usarlo sul metodo addominale come menzionato da Yacoby
Mayank

1
abs restituisce un valore assoluto. Se è tutto quello che vuoi, come fa l'OP, va bene. Ma cosa succede se hai bisogno di andare avanti e indietro?
Absynthe Minded Web Smith

@ApurvaMayank qual è il vantaggio di utilizzare abssu questo? OP non ha menzionato, ma potrebbe anche trasformare il positivo in negativo o mantenerlo positivo .. non puoi assumerne uno senza che sia menzionato.
Andre Figueiredo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.