2009-05-19 33 views
40

Tôi muốn "giới hạn" một số trong Ruby (trên Rails).Cách viết hoa văn và số tròn trong ruby ​​

Ví dụ, tôi có, như là kết quả của một hàm, một phao nhưng tôi cần một int.

tôi có hướng dẫn rất cụ thể, đây là một số ví dụ:

Nếu tôi nhận được 1.5 Tôi muốn 2 nhưng nếu tôi nhận được 2.0 Tôi muốn 2 (và không 3)

Làm number.round(0) + 1 sẽ không hoạt động.

Tôi có thể viết một chức năng để thực hiện việc này nhưng tôi chắc chắn một chức năng đã tồn tại.

Nếu, tuy nhiên, nó không tồn tại, tôi nên tạo hàm mũ của mình ở đâu?

Trả lời

78

Hãy thử ceil:

1.5.ceil => 2 
2.0.ceil => 2 
+7

1.1.ceil => 2 (ví dụ khác) – Patrick

11

Làm thế nào về number.ceil?

Trả về số nguyên nhỏ nhất lớn hơn hoặc bằng số.

Hãy cẩn thận nếu bạn đang sử dụng điều này với số âm, chắc chắn rằng nó làm những gì bạn mong đợi:

1.5.ceil  #=> 2 
2.0.ceil  #=> 2 
(-1.5).ceil #=> -1 
(-2.0).ceil #=> -2 
6

Sử dụng Numeric#ceil:

irb(main):001:0> 1.5.ceil 
=> 2 
irb(main):002:0> 2.0.ceil 
=> 2 
irb(main):003:0> 1.ceil 
=> 1 
2

float.ceil là những gì bạn muốn cho số dương. Hãy chắc chắn xem xét hành vi của các số âm. Tức là, bạn có muốn -1.5 đến "cap" thành -1 hoặc -2 không?

11

.ceil là tốt, nhưng hãy nhớ, thậm chí giá trị nhỏ nhất trong phao sẽ gây ra điều này:

a = 17.00000000000002 
17.0 
a.ceil 
18 
Các vấn đề liên quan