2014-08-28 14 views
33

Çılgın bir insan gibi hissediyorum. Tüm kesirleri en yakın tam sayıya yuvarlamak istiyorum. Örneğin, 67/30 = 2.233333333334 sayılı belgede açıklanmaktadır. Bunu 3'e kadar bitirmek istiyorum. Eğer sonuç tam sayı değilse, asla yuvarlamak istemiyorum. Ruby Always Round Up

Bu

deniyorum budur: bir

İşte
puts 67/30.to_f.ceil 

olan örnekler ne arıyorum:

  • 67/30 = 3
  • 50/100 = 1
  • 2/2 = 1

Herhangi bir fikir? Çok teşekkürler!

+0

En (burada Rails) gereksiz etiketleri sahip olmamak. Rails sorularıyla ilgilenenler için bir zamanlayıcıydı, Rails sorularını filtreleyen kişiler, ilgilerini çekebilecek bir soruyu özleyeceklerdi. –

+2

10 Başka bir yol: '(67 + 30-1)/30 => 3' –

cevap

73

Sorun şu anda ceil numaralı telefonu 30.to_f numaralı telefondan aramanızdır. İşte Yakut bunu değerlendirir nasıl:

(67)/(30.to_f.ceil) 
# .ceil turns the float into an integer again 
(67)/(30.0.ceil) 
# and now it's just an integer division, which will be 2 
67/30 # = 2 

Bunu çözmek için, sadece parantez ekleyebilirsiniz:

puts (67/30.to_f).ceil # = 3 
+0

bu, .ceil yöntemi, gerçek bir tavanı gerçekleştirmek yerine' 30.0' - '30'' '67/30.0.ceil''de çevirir mi? – Rahul

+0

size rock! çok teşekkürler!! – Brandon

+3

@Rahul Bu, orijinal ifadenin aslında tüm düşünceyi yenen '(67)/(30.to_f.ceil)' olarak değerlendirildiği anlamına gelir. –