Ruby: Đổi số âm thành số dương?


105

Cách đơn giản nhất để thay đổi số âm thành số dương với ruby ​​là gì?

I E. Thay đổi "-300" thành "300"

Câu trả lời:


268

Việc sử dụng abssẽ trả về giá trị tuyệt đối của một số

-300.abs  # 300
300.abs   # 300

3
câu trả lời của tôi chỉ dành cho số âm, nếu bạn cần luôn có giá trị tuyệt đối thì đây chắc chắn là cách tốt hơn.
Brandon Bodnar

27

Đặt một dấu hiệu tiêu cực trước nó.

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

6
Chỉ cần lưu ý rằng nếu con số đã là số dương, điều này sẽ khiến nó trở thành số âm.
Sasha Chedygov

Vâng. Làm rõ điều đó trong nhận xét của tôi cho câu trả lời được chấp nhận ở trên.
Brandon Bodnar

8
nó không phải là thiên tài hoặc không phải là điên rồ.
Stephen Nguyen

tại sao phiếu tiêu cực? điều này biến tiêu cực thành tích cực như OP đã hỏi. #abs-là các tính năng khác nhau có cùng hành vi đối với đầu vào / đầu ra được yêu cầu. Nếu đó là do không mong muốn +-> -, đó không hơn là một giả định, vì điều đó không được OP đề cập.
Andre Figuentico

15

Sẽ không dễ dàng hơn khi nhân nó với một âm?

x * -1

Bằng cách đó bạn có thể qua lại.


Tôi thích sử dụng này cho rõ ràng, như sử dụng - dấu hiệu đôi khi có thể dễ dàng để bỏ lỡ
Matthias

1
Đáng ghi nhớ, bạn có thể sử dụng viết tắt x *= -1nếu bạn đang tìm kiếm để lưu trữ các giá trị mới ...
SRack

Dựa trên nguyên tắc tương tự, chúng ta thậm chí có thể chia bất kỳ số âm nào cho -1. Tuy nhiên, tôi chỉ thắc mắc gì có thể được lợi ích của việc sử dụng nó trên abs phương pháp như đã đề cập bởi Yacoby
Apurva Mayank

1
abs trả về một giá trị tuyệt đối. Nếu đó là tất cả những gì bạn muốn, như OP làm, thì tốt thôi. Nhưng nếu bạn cần phải quay đi quay lại?
absynthe web óc smith

@ApurvaMayank lợi ích của việc sử dụng absđiều này là gì? OP không đề cập đến, nhưng anh ấy có thể chuyển từ tích cực sang tiêu cực hoặc giữ nó tích cực .. bạn không thể giả định một điều mà không được đề cập đến.
Andre Figuentico
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.