Getting the sum of a float of numbers?
我有
编辑:
我正在做
1 2 3 | <% @data.each do |data| %> <%= data[ :values ]%> <%end%> |
其中
@数据打印
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或者我错过了什么?