Ruby: Ubah angka negatif menjadi angka positif?

105

Apa cara paling sederhana untuk mengubah angka negatif menjadi positif dengan ruby?

yaitu. Ubah "-300" menjadi "300"

Shpigford
sumber

Jawaban:

268

Menggunakan absakan mengembalikan nilai absolut sebuah angka

-300.abs  # 300
300.abs   # 300
Yacoby
sumber
3
jawaban saya hanya untuk bilangan negatif, jika Anda harus selalu memiliki nilai absolut maka ini pasti cara yang lebih baik.
Brandon Bodnar
27

Letakkan tanda negatif di depannya.

>> --300
=> 300
>> x = -300
=> -300
>> -x
=> 300
Brandon Bodnar
sumber
6
Perhatikan saja jika angkanya sudah positif, ini akan menjadikannya negatif.
Sasha Chedygov
Ya. Memperjelas bahwa dalam komentar saya untuk jawaban yang diterima di atas.
Brandon Bodnar
8
itu bukan jenius atau bukan kegilaan.
Stephen Nguyen
mengapa suara negatif? ini berubah negatif menjadi positif seperti yang diminta OP. #absdan -merupakan fitur berbeda dengan perilaku yang sama untuk input / output yang diminta. Jika itu karena yang tidak diinginkan +-> -, itu tidak lebih dari asumsi, karena itu tidak tercakup oleh OP.
Andre Figueiredo
15

Bukankah lebih mudah mengalikannya dengan yang negatif?

x * -1

Dengan begitu Anda bisa bolak-balik.

absynthe minded web smith
sumber
Saya suka menggunakan ini untuk kejelasan, karena menggunakan tanda - terkadang mudah terlewatkan
Matthias
1
Perlu diingat Anda dapat menggunakan singkatan x *= -1jika Anda ingin menyimpan nilai baru ...
SRack
Berdasarkan prinsip yang sama, kita bahkan dapat membagi bilangan negatif apa pun dengan -1. Namun, saya hanya bertanya-tanya apa manfaat menggunakan metode over abs seperti yang disebutkan oleh Yacoby
Apurva Mayank
1
abs mengembalikan nilai absolut. Jika hanya itu yang Anda inginkan, seperti yang dilakukan OP, tidak masalah. Tetapi bagaimana jika Anda perlu bolak-balik?
absynthe minded web smith
@ApurvaMayank apa manfaat menggunakan absini? OP tidak menyebutkan, tetapi dia dapat mengubah positif menjadi negatif juga atau tetap positif .. Anda tidak dapat mengasumsikan satu tanpa disebutkan.
Andre Figueiredo