Рубин: Измените отрицательное число на положительное?

105

Какой самый простой способ заменить отрицательное число на положительное с помощью рубина?

т.е. Измените "-300" на "300"

Шпигфорд
источник

Ответы:

269

Использование absвернет абсолютное значение числа

-300.abs  # 300
300.abs   # 300
Якоби
источник
3
мой ответ предназначен только для отрицательных чисел, если вам нужно всегда иметь абсолютное значение, тогда это определенно лучший способ.
Брэндон Боднар,
27

Поставьте перед ним отрицательный знак.

>> --300
=> 300
>> x = -300
=> -300
>> -x
=> 300
Брэндон Боднар
источник
6
Просто обратите внимание, что если число уже положительное, это сделает его отрицательным.
Саша Чедыгов
Да. Уточнил это в моем комментарии к принятому выше ответу.
Брэндон Боднар,
8
это либо не гений, либо не безумие.
Стивен Нгуен
почему отрицательные голоса? это превращается из отрицательного в положительный, как просил OP. #absи -представляют собой разные функции с одинаковым поведением для запрашиваемого ввода / вывода. Если это из-за нежелательного +-> -, это не более чем предположение, поскольку это не было охвачено OP.
Андре Фигейредо,
15

Разве не проще было бы умножить его на отрицательное?

x * -1

Таким образом, вы можете двигаться вперед и назад.

Абсолютно мыслящий веб-кузнец
источник
Мне нравится использовать это для ясности, поскольку иногда можно легко пропустить знак
Маттиас
1
Стоит помнить, что вы можете использовать сокращение, x *= -1если хотите сохранить новое значение ...
SRack
По тому же принципу мы можем даже разделить любое отрицательное число на -1. Однако мне просто интересно, в чем может быть преимущество его использования перед методом пресса, как упомянул Якоби
Апурва Маянк
1
abs возвращает абсолютное значение. Если это все, что вам нужно, как это делает OP, все в порядке. Но что, если вам нужно двигаться вперед и назад?
Абсолютно мыслящий веб-кузнец
@ApurvaMayank, какая польза от absэтого? OP не упомянул, но он мог либо превратить положительное в отрицательное, либо сохранить положительное ... вы не можете предположить одно, не упомянув об этом.
Андре Фигейредо,