2016-10-17 15 views
6

Tôi đang làm việc với api bên ngoài trong ứng dụng Ruby on Rails. Tôi cần phải gửi thành bè cho công ty này, nhưng họ chỉ chấp nhận các giá trị như 1.0, 1.25, 1.5, 1.75, 2.0 vvVòng nổi vào quý gần nhất trong Ruby

tôi có thể có một giá trị như 1.34 hoặc 1.80. Tôi lý tưởng cần phải làm tròn chúng đến 0.25 gần nhất. Cách tốt nhất để thực hiện việc này là gì? nếu tôi làm 1.34.round(0), nó sẽ cho tôi số 1.0 thấp hơn mức tôi cần.

Cảm ơn!

Trả lời

13
(1.27 * 4).round/4.0 
#=> 1.25 

Nếu bạn đang đi để sử dụng nó thường xuyên, nó sẽ làm cho cảm giác hoàn hảo để khỉ vá lớp Float, để làm cho việc sử dụng đơn giản hơn:

class Float 
    def round_to_quarter 
    (self * 4).round/4.0 
    end 
end 
1.27.round_to_quarter 
#=> 1.25 
1.52.round_to_quarter 
#=> 1.5 
1.80.round_to_quarter 
#=> 1.75 
1.88.round_to_quarter 
#=> 2.0 
+2

Đây phải là câu trả lời được chấp nhận. Khỉ vá có ý nghĩa hơn ở đây. – dnsh

+0

Thành thật của nó là một vấn đề của ý kiến ​​Dinesh –

-2

Trong khi giải pháp của Andrey sẽ làm việc nếu bạn là không thoải mái với monkey patching một lớp ruby ​​chính sau đây cũng sẽ hoạt động như

#x being the value 
(x * 4).round/4.0 
+1

Đó là * nghĩa đen * giống như '(self * 4) .round/4.0' từ ví dụ của tôi có rằng' self' là một thể hiện của Float :) –

+0

Tôi hoàn toàn đồng ý với bạn . Chỉ là một thay thế. :) –