Ruby: Negative Zahl in positive Zahl ändern?


105

Was ist der einfachste Weg, eine negative Zahl mit Rubin in eine positive zu ändern?

dh. Ändern Sie "-300" in "300"

Antworten:


267

Mit abswird der absolute Wert einer Zahl zurückgegeben

-300.abs  # 300
300.abs   # 300

3
Meine Antwort ist nur für negative Zahlen. Wenn Sie immer den absoluten Wert haben müssen, ist dies definitiv der bessere Weg.
Brandon Bodnar

27

Stellen Sie ein negatives Vorzeichen davor.

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

6
Beachten Sie nur, dass die Zahl, wenn sie bereits positiv ist, negativ wird.
Sasha Chedygov

Ja. Klargestellt, dass in meinem Kommentar zu der oben akzeptierten Antwort.
Brandon Bodnar

8
Es ist entweder kein Genie oder kein Wahnsinn.
Stephen Nguyen

warum negative Stimmen? Dies wird negativ, wenn OP gefragt wird. #absund -sind verschiedene Funktionen mit demselben Verhalten für die angeforderte Eingabe / Ausgabe. Wenn dies auf ein unerwünschtes +-> zurückzuführen ist -, ist dies nur eine Annahme, da dies nicht von OP abgedeckt wurde.
Andre Figueiredo

14

Wäre es nicht einfacher, es mit einem negativen zu multiplizieren?

x * -1

Auf diese Weise können Sie hin und her gehen.


Ich mag es, dies aus Gründen der Klarheit zu verwenden, da die Verwendung des Zeichens manchmal leicht zu übersehen ist
Matthias

1
Denken Sie daran, dass Sie die Kurzschrift verwenden können, x *= -1wenn Sie den neuen Wert speichern
möchten

Basierend auf dem gleichen Prinzip können wir sogar jede negative Zahl durch -1 teilen. Ich habe mich jedoch nur gefragt, was der Vorteil der Verwendung gegenüber der abs-Methode sein kann, wie von Yacoby
Apurva Mayank am

1
abs gibt einen absoluten Wert zurück. Wenn das alles ist, was Sie wollen, wie es das OP tut, ist es in Ordnung. Aber was ist, wenn Sie hin und her gehen müssen?
Absynthe Minded Web Smith

@ApurvaMayank Was ist der Vorteil absdavon? OP hat es nicht erwähnt, aber er könnte entweder positiv zu negativ werden oder es positiv halten. Sie können keines annehmen, ohne dass dies erwähnt wird.
Andre Figueiredo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.