关于ruby on rails:获取数字浮点数的总和?

Getting the sum of a float of numbers?

我有0.0 24.0 0.0 12.0 0.0 0.0 0.0 0.0 0.0,如何得到这些值的总和?.sum等不适用于浮点数

编辑:

我正在做

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

其中data[:values]打印埃多克斯1〔2〕埃多克斯1〔3〕江户十一〔四〕号我只想得到每个数组的第一个值,然后把它们相加得到10.0

@数据打印

1
[{: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]}]


假设它们在一个数组中,这就可以工作:

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

编辑:从您编辑的问题中,您可能需要:

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

它获取每个值的第一(0)个元素,并将它们相加:

1
2
3
4
5
6
7
8
irb(main):003:0> @data
=> [{:values=>[0.0, 0.0, 0.0, 0.0, 0.0], :name=>"BMW
<div class="
suo-content">[collapse title=""]<ul><li>0.0的未定义方法"inject":float</li><li>Ahmet,你应该在数组上调用inject,而不是在单个浮点上调用inject。</li><li>编辑过的问题请帮我重新检查一下</li><li>@艾哈迈特:我不知道你现在在问什么。你想要什么,埃多克斯1〔0〕给什么?我对罗尔不够熟悉,不知道你在问什么。</li><li>如果您在数组上调用这个函数,那么它应该完全满足您的需要。</li><li>谢谢你工作了!:)</li></ul>[/collapse]</div><hr><P>在这里:</P>[cc lang="ruby"]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

修订过的:

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


你需要用一些花哨的方式得到这个和吗,还是用一个循环来做?

我可以这样做:

1
2
3
4
sum = 0
array.each do |a|
  sum+=a
end


If you have array of them:

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

如果没有-使用+。

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

=>36.0或者我错过了什么?