2012-11-09 61 views
0

我想不通爲什麼計算是錯誤的。我試圖計算用戶在Rails應用程序中得分超過中值分數的時間百分比。簡單的軌道計算不正確

控制器

my_scores_over_median_count = 6 
total_scores_over_median = 8 
@my_over_median_percent = (my_scores_over_median_count/total_scores_over_median) * 100 

當我加入這個我控制器:

puts my_scores_over_median_count 
puts total_scores_over_median 
puts @my_over_median_percent 

我得到:

6 (correct) 
8 (correct) 
0 (incorrect) 

是否有人可以幫助我瞭解爲什麼我得到0代替的75?謝謝。

回答

2

經典整數除法問題。改變它並看到它的工作:

my_scores_over_median_count = 6.0 
total_scores_over_median = 8.0 
@my_over_median_percent = (my_scores_over_median_count/total_scores_over_median) * 100 

Ruby將6解釋爲'Fixnum'類,本質上是一個整數。我們知道這是由:

1.9.3-p194 :001 > 6.class 
=> Fixnum 

由一個Fixnum除以任意數量的原因紅寶石做整數運算,這意味着任何剩下的則會拋出。所以:

1.9.3-p194 :004 > 4/5 
=> 0 
1.9.3-p194 :005 > 4/3 
=> 1 

如果你有一個變量,它是一個Fixnum,並希望將其轉換爲一個浮動迫使浮點除法,可以使用.to_f方法:

1.9.3-p194 :007 > x = 4 
=> 4 
1.9.3-p194 :008 > y = 5 
=> 5 
1.9.3-p194 :009 > x/y 
=> 0 
1.9.3-p194 :010 > x.to_f/y 
=> 0.8 
+0

的作品!現在,分數是重要的。我如何改變這些工作。例如,我有'my_scores_over_median_count = @ my_games.where(「my_score>?」,median_score).count'。謝謝 – yellowreign

+0

編輯顯示如何使用.to_f方法強制計數變成浮點數 – SporkInventor

+0

感謝您的幫助! – yellowreign