得到一个数字浮点数的总和?

时间:2011-10-26 14:13:42

标签: ruby-on-rails ruby ruby-on-rails-3

我有0.0 24.0 0.0 12.0 0.0 0.0 0.0 0.0 0.0如何获得这些值的总和? .sum等不适用于花车

编辑:

我在做

<% @data.each do |data| %>
    <%= data[ :values ]%>
<%end%>

data[:values]打印的位置 [5.0, 0.0, 0.0, 0.0, 0.0] [4.0, 0.0, 0.0, 0.0, 0.0] [1.0, 0.0, 0.0, 0.0, 0.0] 我只想得到每个数组的第一个值并将它们加在一起得到10.0

@data prints

[{:name=>"BMW", :values=>[0.0, 0.0, 0.0, 0.0, 0.0]}, {:name=>"Asda", :values=>[32.0, 12.0, 0.0, 0.0, 0.0]}]

4 个答案:

答案 0 :(得分:7)

假设它们在一个数组中,这可行:

irb(main):001:0> [0.0, 1.0, 3.0].inject(:+)
=> 4.0

编辑:根据您编辑的问题,您似乎想要:

@data.reduce(0) { |sum, x| sum += x[:values][0] }

它抓取每个值的第一个(第0个)元素,并将它们汇总在一起:

irb(main):003:0> @data
=> [{:values=>[0.0, 0.0, 0.0, 0.0, 0.0], :name=>"BMW"}, {:values=>[32.0, 12.0, 0.0, 0.0, 0.0], :name=>"Asda"}]
irb(main):004:0> @data.reduce(0) { |sum, x| sum += x[:values][0] }
=> 32.0

答案 1 :(得分:3)

这里:

irb(main):001:0> values = [[1.0,0.0],[2.0,0.0],[3.0,0.0]]
=> [[1.0, 0.0], [2.0, 0.0], [3.0, 0.0]]
irb(main):002:0> values.map(&:first)
=> [1.0, 2.0, 3.0]
irb(main):003:0> values.map(&:first).inject(:+)
=> 6.0

修订:

@data.map {|hash| hash[:values].first}.inject(:+)

答案 2 :(得分:-1)

如果您有数组:

[0.0, 24.0, 0.0, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0].reduce(:+)

如果不是 - 使用+。

0.0 + 24.0 + 0.0 + 12.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0

=&GT; 36.0 或者我想念一些东西?

答案 3 :(得分:-1)

你是否需要以某种奇特的方式获得总和,或者可以在循环中完成它?

我会这样做:

sum = 0
array.each do |a|
  sum+=a
end