百分比计算 - Ruby on Rails

时间:2014-11-05 15:56:30

标签: ruby-on-rails ruby ruby-on-rails-4 percentage

背景:联盟有很多玩家,其中有很多城镇。每个城镇都属于海洋

我的问题:

我试图计算特定海洋中城镇的百分比。 E.g:

<% @alliance.players.each do |p| %>
  <% p.towns.each do |t| %>
    <%= t.ocean %> 
  <% end %>
<% end %>

这给了我一个给定联盟的所有Town's Ocean's。输出将如下所示:

54 54 54 54 54 35 54 54 54 54 54 54 54 54 45 45 45 45 45 45 54 54 54 44 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 44 54 44 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54

所以我们有多数:54 少数:44

我如何计算结果,以便获得特定海洋中城镇的百分比,以便得到例如:Ocean 54: 83%Ocean 44: 17%的输出。

1 个答案:

答案 0 :(得分:3)

怎么样:

percentages = p.towns.group_by(&:ocean).map {|ocean, towns| [ocean, (towns.count/p.towns.count.to_f * 100).round(0)]}.to_h
perentages.each {|ocean, percentage| puts "Ocean #{ocean}: #{percentage}%"}