Ruby: zmienić liczbę ujemną na liczbę dodatnią?

105

Jaki jest najprostszy sposób zmiany liczby ujemnej na dodatnią za pomocą rubinu?

to znaczy. Zmień „-300” na „300”

Shpigford
źródło

Odpowiedzi:

269

Użycie abszwróci wartość bezwzględną liczby

-300.abs  # 300
300.abs   # 300
Yacoby
źródło
3
moja odpowiedź dotyczy tylko liczb ujemnych, jeśli zawsze musisz mieć wartość bezwzględną, jest to zdecydowanie lepszy sposób.
Brandon Bodnar,
27

Umieść przed nim znak minus.

>> --300
=> 300
>> x = -300
=> -300
>> -x
=> 300
Brandon Bodnar
źródło
6
Zwróć uwagę, że jeśli liczba jest już dodatnia, spowoduje to, że będzie ujemna.
Sasha Chedygov
Tak. Wyjaśniłem to w moim komentarzu do powyższej zaakceptowanej odpowiedzi.
Brandon Bodnar
8
albo nie jest geniuszem, albo nie jest szaleństwem.
Stephen Nguyen
dlaczego głosy negatywne? to zmienia się negatywne w pozytywne, zgodnie z zapytaniem OP. #absi -są różnymi funkcjami z tym samym zachowaniem dla żądanego wejścia / wyjścia. Jeśli to z powodu niepożądanego +-> -, to tylko przypuszczenie, ponieważ nie zostało to uwzględnione w OP.
Andre Figueiredo
15

Czy nie byłoby łatwiej pomnożyć to przez minus?

x * -1

W ten sposób możesz chodzić tam iz powrotem.

absynt umysłem kowal sieci
źródło
Lubię używać tego dla jasności, ponieważ użycie znaku - może być czasami łatwe do przeoczenia
Matthias
1
Warto pamiętać, że x *= -1jeśli chcesz zapisać nową wartość , możesz użyć skrótu ...
SRack
Opierając się na tej samej zasadzie, możemy nawet podzielić dowolną liczbę ujemną przez -1. Zastanawiałem się jednak, jaka może być korzyść ze stosowania go w porównaniu z metodą abs, o czym wspomniał Yacoby
Apurva Mayank
1
abs zwraca wartość bezwzględną. Jeśli to wszystko, czego chcesz, tak jak robi to OP, w porządku. Ale co, jeśli musisz chodzić tam iz powrotem?
absynthe Minded web smith
@ApurvaMayank jakie są korzyści z używania abstego? OP nie wspomniał, ale mógł albo zmienić wartość dodatnią na ujemną, albo pozostawić ją pozytywną ... nie można założyć żadnego bez wzmianki o tym.
Andre Figueiredo